From 7e242f7f8517d4dd51c6d8f8047b027f841b1fcd Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Thu, 2 Oct 2025 12:42:08 +0200 Subject: [PATCH 01/40] feat(drive-abci): preliminary support for event subscriptions in Platform --- Cargo.lock | 58 +- Cargo.toml | 1 + .../protos/platform/v0/platform.proto | 92 ++ packages/rs-dash-event-bus/Cargo.toml | 37 + packages/rs-dash-event-bus/src/event_bus.rs | 527 +++++++++ packages/rs-dash-event-bus/src/event_mux.rs | 1052 +++++++++++++++++ .../rs-dash-event-bus/src/grpc_producer.rs | 52 + packages/rs-dash-event-bus/src/lib.rs | 17 + .../src/local_bus_producer.rs | 175 +++ packages/rs-drive-abci/Cargo.toml | 5 +- .../rs-drive-abci/src/abci/app/consensus.rs | 21 +- packages/rs-drive-abci/src/abci/app/full.rs | 16 +- packages/rs-drive-abci/src/abci/app/mod.rs | 10 + .../src/abci/handler/finalize_block.rs | 85 +- packages/rs-drive-abci/src/query/mod.rs | 1 + packages/rs-drive-abci/src/query/service.rs | 108 +- packages/rs-drive-abci/src/server.rs | 10 +- .../tests/strategy_tests/main.rs | 48 + packages/rs-sdk/Cargo.toml | 24 +- packages/rs-sdk/examples/platform_events.rs | 206 ++++ packages/rs-sdk/src/error.rs | 3 + packages/rs-sdk/src/platform.rs | 1 + packages/rs-sdk/src/platform/events.rs | 82 ++ packages/rs-sdk/src/sdk.rs | 33 +- packages/rs-sdk/tests/fetch/mod.rs | 1 + .../rs-sdk/tests/fetch/platform_events.rs | 110 ++ packages/wasm-sdk/src/error.rs | 6 + 27 files changed, 2749 insertions(+), 32 deletions(-) create mode 100644 packages/rs-dash-event-bus/Cargo.toml create mode 100644 packages/rs-dash-event-bus/src/event_bus.rs create mode 100644 packages/rs-dash-event-bus/src/event_mux.rs create mode 100644 packages/rs-dash-event-bus/src/grpc_producer.rs create mode 100644 packages/rs-dash-event-bus/src/lib.rs create mode 100644 packages/rs-dash-event-bus/src/local_bus_producer.rs create mode 100644 packages/rs-sdk/examples/platform_events.rs create mode 100644 packages/rs-sdk/src/platform/events.rs create mode 100644 packages/rs-sdk/tests/fetch/platform_events.rs diff --git a/Cargo.lock b/Cargo.lock index e8b0ecbbce2..6fb3848b92c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1017,7 +1017,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -1435,8 +1435,10 @@ dependencies = [ "http", "js-sys", "lru", + "once_cell", "platform-wallet", "rs-dapi-client", + "rs-dash-event-bus", "rs-sdk-trusted-context-provider", "rustls-pemfile", "sanitize-filename", @@ -1876,16 +1878,19 @@ dependencies = [ "regex", "reopen", "rocksdb 0.23.0", + "rs-dash-event-bus", "rust_decimal", "rust_decimal_macros", "serde", "serde_json", + "sha2", "simple-signer", "strategy-tests", "tempfile", "tenderdash-abci", "thiserror 1.0.69", "tokio", + "tokio-stream", "tokio-util", "tracing", "tracing-subscriber", @@ -2105,7 +2110,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.0", ] [[package]] @@ -3208,7 +3213,7 @@ checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3472,7 +3477,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if 1.0.3", - "windows-targets 0.48.5", + "windows-targets 0.53.3", ] [[package]] @@ -3649,9 +3654,9 @@ dependencies = [ [[package]] name = "metrics-exporter-prometheus" -version = "0.16.2" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd7399781913e5393588a8d8c6a2867bf85fb38eaf2502fdce465aad2dc6f034" +checksum = "2b166dea96003ee2531cf14833efedced545751d800f03535801d833313f8c15" dependencies = [ "base64 0.22.1", "http-body-util", @@ -3662,16 +3667,16 @@ dependencies = [ "metrics", "metrics-util", "quanta", - "thiserror 1.0.69", + "thiserror 2.0.16", "tokio", "tracing", ] [[package]] name = "metrics-util" -version = "0.19.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8496cc523d1f94c1385dd8f0f0c2c480b2b8aeccb5b7e4485ad6365523ae376" +checksum = "fe8db7a05415d0f919ffb905afa37784f71901c9a773188876984b4f769ab986" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -5066,6 +5071,21 @@ dependencies = [ "wasm-bindgen-futures", ] +[[package]] +name = "rs-dash-event-bus" +version = "2.1.0-dev.3" +dependencies = [ + "dapi-grpc", + "futures", + "metrics", + "rs-dapi-client", + "sender-sink", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", +] + [[package]] name = "rs-sdk-ffi" version = "2.1.0-dev.7" @@ -5200,7 +5220,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.4.15", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5213,7 +5233,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys 0.11.0", - "windows-sys 0.52.0", + "windows-sys 0.61.0", ] [[package]] @@ -5451,6 +5471,16 @@ version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" +[[package]] +name = "sender-sink" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa84fb38012aeecea16454e88aea3f2d36cf358a702e3116448213b2e13f2181" +dependencies = [ + "futures", + "tokio", +] + [[package]] name = "serde" version = "1.0.225" @@ -6011,7 +6041,7 @@ dependencies = [ "getrandom 0.3.3", "once_cell", "rustix 1.1.2", - "windows-sys 0.52.0", + "windows-sys 0.61.0", ] [[package]] @@ -6311,6 +6341,7 @@ dependencies = [ "futures-core", "pin-project-lite", "tokio", + "tokio-util", ] [[package]] @@ -6335,6 +6366,7 @@ dependencies = [ "bytes", "futures-core", "futures-sink", + "futures-util", "pin-project-lite", "tokio", ] @@ -7241,7 +7273,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 0041d4db196..49592cb46ad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -36,6 +36,7 @@ members = [ "packages/rs-sdk-ffi", "packages/wasm-drive-verify", "packages/dash-platform-balance-checker", + "packages/rs-dash-event-bus", "packages/rs-platform-wallet", "packages/wasm-sdk", ] diff --git a/packages/dapi-grpc/protos/platform/v0/platform.proto b/packages/dapi-grpc/protos/platform/v0/platform.proto index 46be29d86bc..09406c8a303 100644 --- a/packages/dapi-grpc/protos/platform/v0/platform.proto +++ b/packages/dapi-grpc/protos/platform/v0/platform.proto @@ -6,6 +6,94 @@ package org.dash.platform.dapi.v0; import "google/protobuf/timestamp.proto"; +// Platform events streaming (v0) +message PlatformEventsCommand { + message PlatformEventsCommandV0 { + oneof command { + AddSubscriptionV0 add = 1; + RemoveSubscriptionV0 remove = 2; + PingV0 ping = 3; + } + } + oneof version { PlatformEventsCommandV0 v0 = 1; } +} + +message PlatformEventsResponse { + message PlatformEventsResponseV0 { + oneof response { + PlatformEventMessageV0 event = 1; + AckV0 ack = 2; + PlatformErrorV0 error = 3; + } + } + oneof version { PlatformEventsResponseV0 v0 = 1; } +} + +message AddSubscriptionV0 { + string client_subscription_id = 1; + PlatformFilterV0 filter = 2; +} + +message RemoveSubscriptionV0 { + string client_subscription_id = 1; +} + +message PingV0 { uint64 nonce = 1; } + +message AckV0 { + string client_subscription_id = 1; + string op = 2; // "add" | "remove" +} + +message PlatformErrorV0 { + string client_subscription_id = 1; + uint32 code = 2; + string message = 3; +} + +message PlatformEventMessageV0 { + string client_subscription_id = 1; + PlatformEventV0 event = 2; +} + +// Initial placeholder filter and event to be refined during integration +// Filter for StateTransitionResult events +message StateTransitionResultFilter { + // When set, only match StateTransitionResult events for this tx hash. + optional bytes tx_hash = 1; +} + +message PlatformFilterV0 { + oneof kind { + bool all = 1; // subscribe to all platform events + bool block_committed = 2; // subscribe to BlockCommitted events only + StateTransitionResultFilter state_transition_result = 3; // subscribe to StateTransitionResult events (optionally filtered by tx_hash) + } +} + +message PlatformEventV0 { + message BlockMetadata { + uint64 height = 1 [ jstype = JS_STRING ]; + uint64 time_ms = 2 [ jstype = JS_STRING ]; + bytes block_id_hash = 3; + } + + message BlockCommitted { + BlockMetadata meta = 1; + uint32 tx_count = 2; + } + + message StateTransitionFinalized { + BlockMetadata meta = 1; + bytes tx_hash = 2; + } + + oneof event { + BlockCommitted block_committed = 1; + StateTransitionFinalized state_transition_finalized = 2; + } +} + service Platform { rpc broadcastStateTransition(BroadcastStateTransitionRequest) returns (BroadcastStateTransitionResponse); @@ -102,6 +190,10 @@ service Platform { rpc getGroupActions(GetGroupActionsRequest) returns (GetGroupActionsResponse); rpc getGroupActionSigners(GetGroupActionSignersRequest) returns (GetGroupActionSignersResponse); + + // Bi-directional stream for multiplexed platform events subscriptions + rpc subscribePlatformEvents(stream PlatformEventsCommand) + returns (stream PlatformEventsResponse); } // Proof message includes cryptographic proofs for validating responses diff --git a/packages/rs-dash-event-bus/Cargo.toml b/packages/rs-dash-event-bus/Cargo.toml new file mode 100644 index 00000000000..853d24d2c38 --- /dev/null +++ b/packages/rs-dash-event-bus/Cargo.toml @@ -0,0 +1,37 @@ +[package] +name = "rs-dash-event-bus" +version = "2.1.0-dev.3" +edition = "2021" +license = "MIT OR Apache-2.0" +description = "Shared event bus and Platform events multiplexer for Dash Platform (rs-dapi, rs-drive-abci, rs-sdk)" + +[lib] +name = "dash_event_bus" +path = "src/lib.rs" + +[features] +default = [] +metrics = ["dep:metrics"] + +[dependencies] +tokio = { version = "1", features = ["rt", "macros", "sync", "time"] } +tokio-stream = { version = "0.1", features = ["sync"] } +tokio-util = { version = "0.7", features = ["rt"] } +tracing = "0.1" +futures = "0.3" +sender-sink = { version = "0.2.1" } + +# Internal workspace crates +dapi-grpc = { path = "../dapi-grpc" } +rs-dapi-client = { path = "../rs-dapi-client" } + +# Optional metrics +metrics = { version = "0.24.2", optional = true } + +[dev-dependencies] +tokio = { version = "1", features = [ + "rt-multi-thread", + "macros", + "sync", + "time", +] } diff --git a/packages/rs-dash-event-bus/src/event_bus.rs b/packages/rs-dash-event-bus/src/event_bus.rs new file mode 100644 index 00000000000..b95bb77d8c6 --- /dev/null +++ b/packages/rs-dash-event-bus/src/event_bus.rs @@ -0,0 +1,527 @@ +//! Generic, clonable in-process event bus with pluggable filtering. + +use std::collections::BTreeMap; +use std::fmt::Debug; +use std::sync::atomic::{AtomicU64, Ordering}; +use std::sync::Arc; + +use tokio::sync::mpsc::error::TrySendError; +use tokio::sync::{mpsc, Mutex, RwLock}; + +const DEFAULT_SUBSCRIPTION_CAPACITY: usize = 256; + +/// Filter trait for event matching on a specific event type. +pub trait Filter: Send + Sync { + /// Return true if the event matches the filter. + fn matches(&self, event: &E) -> bool; +} + +/// Internal subscription structure. +/// +/// Note: no Clone impl, so that dropping the sender closes the channel. +struct Subscription { + filter: F, + sender: mpsc::Sender, +} + +/// Generic, clonable in-process event bus with pluggable filtering. +pub struct EventBus { + subs: Arc>>>, + counter: Arc, + tasks: Arc>>, // tasks spawned for this subscription, cancelled on drop + channel_capacity: usize, +} + +impl Clone for EventBus { + fn clone(&self) -> Self { + Self { + subs: Arc::clone(&self.subs), + counter: Arc::clone(&self.counter), + tasks: Arc::clone(&self.tasks), + channel_capacity: self.channel_capacity, + } + } +} + +impl Default for EventBus +where + E: Clone + Send + 'static, + F: Filter + Send + Sync + Debug + 'static, +{ + fn default() -> Self { + Self::new() + } +} + +impl EventBus { + /// Remove a subscription by id and update metrics. + pub async fn remove_subscription(&self, id: u64) { + let mut subs = self.subs.write().await; + if subs.remove(&id).is_some() { + metrics_unsubscribe_inc(); + metrics_active_gauge_set(subs.len()); + tracing::debug!("event_bus: removed subscription id={}", id); + } else { + tracing::debug!("event_bus: subscription id={} not found, not removed", id); + } + } +} + +impl EventBus +where + E: Clone + Send + 'static, + F: Filter + Debug + Send + Sync + 'static, +{ + /// Create a new, empty event bus. + pub fn new() -> Self { + Self::with_capacity(DEFAULT_SUBSCRIPTION_CAPACITY) + } + + /// Create a new event bus with a custom per-subscription channel capacity. + pub fn with_capacity(capacity: usize) -> Self { + metrics_register_once(); + Self { + subs: Arc::new(RwLock::new(BTreeMap::new())), + counter: Arc::new(AtomicU64::new(0)), + tasks: Arc::new(Mutex::new(tokio::task::JoinSet::new())), + channel_capacity: capacity.max(1), + } + } + + /// Add a new subscription using the provided filter. + pub async fn add_subscription(&self, filter: F) -> SubscriptionHandle { + tracing::trace!(?filter, "event_bus: adding subscription"); + + let id = self.counter.fetch_add(1, Ordering::SeqCst); + let (tx, rx) = mpsc::channel::(self.channel_capacity); + + let sub = Subscription { filter, sender: tx }; + + { + let mut subs = self.subs.write().await; + subs.insert(id, sub); + metrics_active_gauge_set(subs.len()); + metrics_subscribe_inc(); + } + tracing::debug!(sub_id = id, "event_bus: added subscription"); + + SubscriptionHandle { + id, + rx: Arc::new(Mutex::new(rx)), + drop: true, + event_bus: self.clone(), + } + } + + /// Publish an event to all subscribers whose filters match, using + /// the current Tokio runtime if available, otherwise log a warning. + /// + /// This is a best-effort, fire-and-forget variant of `notify`. + pub fn notify_sync(&self, event: E) { + let bus = self.clone(); + if let Ok(handle) = tokio::runtime::Handle::try_current() { + handle.spawn(async move { + bus.notify(event).await; + }); + } else { + tracing::warn!("event_bus.notify_sync: no current tokio runtime"); + } + } + + /// Publish an event to all subscribers whose filters match. + pub async fn notify(&self, event: E) { + metrics_events_published_inc(); + + let mut targets = Vec::new(); + { + let subs_guard = self.subs.read().await; + for (id, sub) in subs_guard.iter() { + if sub.filter.matches(&event) { + targets.push((*id, sub.sender.clone())); + } + } + } + + if targets.is_empty() { + return; + } + + let mut dead = Vec::new(); + + for (id, sender) in targets.into_iter() { + let payload = event.clone(); + + match sender.try_send(payload) { + Ok(()) => { + metrics_events_delivered_inc(); + tracing::trace!(subscription_id = id, "event_bus: event delivered"); + } + Err(TrySendError::Full(_value)) => { + metrics_events_dropped_inc(); + tracing::warn!( + subscription_id = id, + "event_bus: subscriber queue full, removing laggy subscriber to protect others" + ); + // Drop the event for this subscriber and remove subscription + dead.push(id); + } + Err(TrySendError::Closed(_value)) => { + metrics_events_dropped_inc(); + dead.push(id); + } + } + } + + for id in dead { + tracing::debug!( + subscription_id = id, + "event_bus: removing dead subscription" + ); + self.remove_subscription(id).await; + } + } + + /// Get the current number of active subscriptions. + pub async fn subscription_count(&self) -> usize { + self.subs.read().await.len() + } + + /// Copy all event messages from an unbounded mpsc receiver into the event bus. + pub async fn copy_from_unbounded_mpsc(&self, mut rx: mpsc::UnboundedReceiver) { + let bus = self.clone(); + let mut tasks = self.tasks.lock().await; + tasks.spawn(async move { + while let Some(event) = rx.recv().await { + bus.notify(event).await; + } + }); + } +} + +/// RAII subscription handle; dropping the last clone removes the subscription. +pub struct SubscriptionHandle +where + E: Send + 'static, + F: Send + Sync + 'static, +{ + id: u64, + rx: Arc>>, + event_bus: EventBus, + drop: bool, // true only for primary handles +} + +impl Clone for SubscriptionHandle +where + E: Send + 'static, + F: Send + Sync + 'static, +{ + fn clone(&self) -> Self { + Self { + id: self.id, + rx: Arc::clone(&self.rx), + event_bus: self.event_bus.clone(), + drop: self.drop, + } + } +} + +impl SubscriptionHandle +where + E: Send + 'static, + F: Send + Sync + 'static, +{ + /// Get the unique ID of this subscription. + pub fn id(&self) -> u64 { + self.id + } + + /// Receive the next event for this subscription. + pub async fn recv(&self) -> Option { + let mut rx = self.rx.lock().await; + rx.recv().await + } + + /// Disable automatic unsubscription when the last handle is dropped. + /// + /// By default, dropping the final [`SubscriptionHandle`] removes the + /// subscription from the [`EventBus`]. Calling this method keeps the + /// subscription registered so that the caller can explicitly remove it + /// via [`EventBus::remove_subscription`]. + pub fn no_unsubscribe_on_drop(mut self) -> Self { + self.drop = false; + self + } +} + +impl Drop for SubscriptionHandle +where + E: Send + 'static, + F: Send + Sync + 'static, +{ + fn drop(&mut self) { + if self.drop { + // Remove only when the last clone of this handle is dropped + if Arc::strong_count(&self.rx) == 1 { + let bus = self.event_bus.clone(); + let id = self.id; + + // Prefer removing via Tokio if a runtime is available + if let Ok(handle) = tokio::runtime::Handle::try_current() { + handle.spawn(async move { + bus.remove_subscription(id).await; + }); + } else { + // Fallback: best-effort synchronous removal using try_write() + if let Ok(mut subs) = bus.subs.try_write() { + if subs.remove(&id).is_some() { + metrics_unsubscribe_inc(); + metrics_active_gauge_set(subs.len()); + } + } + } + } + } + } +} + +// ---- Metrics helpers (gated) ---- + +#[cfg(feature = "metrics")] +mod met { + use metrics::{counter, describe_counter, describe_gauge, gauge}; + use std::sync::Once; + + pub const ACTIVE_SUBSCRIPTIONS: &str = "event_bus_active_subscriptions"; + pub const SUBSCRIBE_TOTAL: &str = "event_bus_subscribe_total"; + pub const UNSUBSCRIBE_TOTAL: &str = "event_bus_unsubscribe_total"; + pub const EVENTS_PUBLISHED_TOTAL: &str = "event_bus_events_published_total"; + pub const EVENTS_DELIVERED_TOTAL: &str = "event_bus_events_delivered_total"; + pub const EVENTS_DROPPED_TOTAL: &str = "event_bus_events_dropped_total"; + + pub fn register_metrics_once() { + static ONCE: Once = Once::new(); + ONCE.call_once(|| { + describe_gauge!( + ACTIVE_SUBSCRIPTIONS, + "Current number of active event bus subscriptions" + ); + describe_counter!( + SUBSCRIBE_TOTAL, + "Total subscriptions created on the event bus" + ); + describe_counter!( + UNSUBSCRIBE_TOTAL, + "Total subscriptions removed from the event bus" + ); + describe_counter!( + EVENTS_PUBLISHED_TOTAL, + "Total events published to the event bus" + ); + describe_counter!( + EVENTS_DELIVERED_TOTAL, + "Total events delivered to subscribers" + ); + describe_counter!( + EVENTS_DROPPED_TOTAL, + "Total events dropped due to dead subscribers" + ); + }); + } + + pub fn active_gauge_set(n: usize) { + gauge!(ACTIVE_SUBSCRIPTIONS).set(n as f64); + } + pub fn subscribe_inc() { + counter!(SUBSCRIBE_TOTAL).increment(1); + } + pub fn unsubscribe_inc() { + counter!(UNSUBSCRIBE_TOTAL).increment(1); + } + pub fn events_published_inc() { + counter!(EVENTS_PUBLISHED_TOTAL).increment(1); + } + pub fn events_delivered_inc() { + counter!(EVENTS_DELIVERED_TOTAL).increment(1); + } + pub fn events_dropped_inc() { + counter!(EVENTS_DROPPED_TOTAL).increment(1); + } +} + +#[cfg(feature = "metrics")] +#[inline] +fn metrics_register_once() { + met::register_metrics_once() +} +#[cfg(not(feature = "metrics"))] +#[inline] +fn metrics_register_once() {} + +#[cfg(feature = "metrics")] +#[inline] +fn metrics_active_gauge_set(n: usize) { + met::active_gauge_set(n) +} +#[cfg(not(feature = "metrics"))] +#[inline] +fn metrics_active_gauge_set(_n: usize) {} + +#[cfg(feature = "metrics")] +#[inline] +fn metrics_subscribe_inc() { + met::subscribe_inc() +} +#[cfg(not(feature = "metrics"))] +#[inline] +fn metrics_subscribe_inc() {} + +#[cfg(feature = "metrics")] +#[inline] +fn metrics_unsubscribe_inc() { + met::unsubscribe_inc() +} +#[cfg(not(feature = "metrics"))] +#[inline] +fn metrics_unsubscribe_inc() {} + +#[cfg(feature = "metrics")] +#[inline] +fn metrics_events_published_inc() { + met::events_published_inc() +} +#[cfg(not(feature = "metrics"))] +#[inline] +fn metrics_events_published_inc() {} + +#[cfg(feature = "metrics")] +#[inline] +fn metrics_events_delivered_inc() { + met::events_delivered_inc() +} +#[cfg(not(feature = "metrics"))] +#[inline] +fn metrics_events_delivered_inc() {} + +#[cfg(feature = "metrics")] +#[inline] +fn metrics_events_dropped_inc() { + met::events_dropped_inc() +} +#[cfg(not(feature = "metrics"))] +#[inline] +fn metrics_events_dropped_inc() {} + +#[cfg(test)] +mod tests { + use super::*; + use tokio::time::{timeout, Duration}; + + #[derive(Clone, Debug, PartialEq)] + enum Evt { + Num(u32), + } + + #[derive(Clone, Debug)] + struct EvenOnly; + + impl Filter for EvenOnly { + fn matches(&self, e: &Evt) -> bool { + matches!(e, Evt::Num(n) if n % 2 == 0) + } + } + + #[tokio::test] + async fn basic_subscribe_and_notify() { + let bus: EventBus = EventBus::new(); + let sub = bus.add_subscription(EvenOnly).await; + + bus.notify(Evt::Num(1)).await; // filtered out + bus.notify(Evt::Num(2)).await; // delivered + + let got = timeout(Duration::from_millis(200), sub.recv()) + .await + .unwrap() + .unwrap(); + assert_eq!(got, Evt::Num(2)); + } + + #[tokio::test] + async fn drop_removes_subscription() { + let bus: EventBus = EventBus::new(); + let sub = bus.add_subscription(EvenOnly).await; + assert_eq!(bus.subscription_count().await, 1); + drop(sub); + + for _ in 0..10 { + if bus.subscription_count().await == 0 { + break; + } + tokio::time::sleep(Duration::from_millis(20)).await; + } + assert_eq!(bus.subscription_count().await, 0); + } + + #[tokio::test] + async fn multiple_events_delivered() { + let bus: EventBus = EventBus::new(); + let sub = bus.add_subscription(EvenOnly).await; + + bus.notify(Evt::Num(2)).await; + bus.notify(Evt::Num(12)).await; + + let a = timeout(Duration::from_millis(200), sub.recv()) + .await + .unwrap() + .unwrap(); + assert_eq!(a, Evt::Num(2)); + let b = timeout(Duration::from_millis(200), sub.recv()) + .await + .unwrap() + .unwrap(); + assert_eq!(b, Evt::Num(12)); + } + + #[tokio::test] + async fn no_unsubscribe_on_drop_allows_manual_cleanup() { + let bus: EventBus = EventBus::new(); + let handle = bus + .add_subscription(EvenOnly) + .await + .no_unsubscribe_on_drop(); + let id = handle.id(); + + drop(handle); + // Automatic removal should not happen + assert_eq!(bus.subscription_count().await, 1); + + bus.remove_subscription(id).await; + assert_eq!(bus.subscription_count().await, 0); + } + + #[tokio::test] + async fn unsubscribe() { + let bus: EventBus = EventBus::new(); + let sub = bus.add_subscription(EvenOnly).await; + + bus.notify(Evt::Num(2)).await; + bus.notify(Evt::Num(12)).await; + + bus.remove_subscription(sub.id()).await; + + bus.notify(Evt::Num(3)).await; // not delivered as we already unsubscribed + + let a = timeout(Duration::from_millis(200), sub.recv()) + .await + .unwrap() + .unwrap(); + assert_eq!(a, Evt::Num(2)); + let b = timeout(Duration::from_millis(200), sub.recv()) + .await + .unwrap() + .unwrap(); + assert_eq!(b, Evt::Num(12)); + + let c = timeout(Duration::from_millis(200), sub.recv()).await; + assert!(c.unwrap().is_none(), "only two events should be received",); + } +} diff --git a/packages/rs-dash-event-bus/src/event_mux.rs b/packages/rs-dash-event-bus/src/event_mux.rs new file mode 100644 index 00000000000..357ea0bf9a7 --- /dev/null +++ b/packages/rs-dash-event-bus/src/event_mux.rs @@ -0,0 +1,1052 @@ +//! EventMux: a generic multiplexer between multiple Platform event subscribers +//! and producers. Subscribers send `PlatformEventsCommand` and receive +//! `PlatformEventsResponse`. Producers receive commands and generate responses. +//! +//! Features: +//! - Multiple subscribers and producers +//! - Round-robin dispatch of commands to producers +//! - Register per-subscriber filters on Add, remove on Remove +//! - Fan-out responses to all subscribers whose filters match + +use std::collections::{BTreeMap, BTreeSet}; +use std::sync::atomic::{AtomicUsize, Ordering}; +use std::sync::Arc; + +use dapi_grpc::platform::v0::platform_events_command::platform_events_command_v0::Command as Cmd; +use dapi_grpc::platform::v0::platform_events_command::Version as CmdVersion; +use dapi_grpc::platform::v0::platform_events_response::platform_events_response_v0::Response as Resp; +use dapi_grpc::platform::v0::PlatformEventsCommand; +use dapi_grpc::tonic::Status; +use futures::SinkExt; +use tokio::join; +use tokio::sync::{mpsc, Mutex}; +use tokio_util::sync::PollSender; + +use crate::event_bus::{EventBus, Filter as EventFilter, SubscriptionHandle}; +use dapi_grpc::platform::v0::PlatformEventsResponse; +use dapi_grpc::platform::v0::PlatformFilterV0; + +pub type EventsCommandResult = Result; +pub type EventsResponseResult = Result; + +const COMMAND_CHANNEL_CAPACITY: usize = 128; +const RESPONSE_CHANNEL_CAPACITY: usize = 512; + +pub type CommandSender = mpsc::Sender; +pub type CommandReceiver = mpsc::Receiver; + +pub type ResponseSender = mpsc::Sender; +pub type ResponseReceiver = mpsc::Receiver; + +/// EventMux: manages subscribers and producers, routes commands and responses. +pub struct EventMux { + bus: EventBus, + producers: Arc>>>, + rr_counter: Arc, + tasks: Arc>>, + subscriptions: Arc>>, + next_subscriber_id: Arc, +} + +impl Default for EventMux { + fn default() -> Self { + Self::new() + } +} + +impl EventMux { + async fn handle_subscriber_disconnect(&self, subscriber_id: u64) { + tracing::debug!(subscriber_id, "event_mux: handling subscriber disconnect"); + self.remove_subscriber(subscriber_id).await; + } + /// Create a new, empty EventMux without producers or subscribers. + pub fn new() -> Self { + Self { + bus: EventBus::new(), + producers: Arc::new(Mutex::new(Vec::new())), + rr_counter: Arc::new(AtomicUsize::new(0)), + tasks: Arc::new(Mutex::new(tokio::task::JoinSet::new())), + subscriptions: Arc::new(std::sync::Mutex::new(BTreeMap::new())), + next_subscriber_id: Arc::new(AtomicUsize::new(1)), + } + } + + /// Register a new producer. Returns an `EventProducer` comprised of: + /// - `cmd_rx`: producer receives commands from the mux + /// - `resp_tx`: producer sends generated responses into the mux + pub async fn add_producer(&self) -> EventProducer { + let (cmd_tx, cmd_rx) = mpsc::channel::(COMMAND_CHANNEL_CAPACITY); + let (resp_tx, resp_rx) = mpsc::channel::(RESPONSE_CHANNEL_CAPACITY); + + // Store command sender so mux can forward commands via round-robin + { + let mut prods = self.producers.lock().await; + prods.push(Some(cmd_tx)); + } + + // Route producer responses into the event bus + let bus = self.bus.clone(); + let mux = self.clone(); + let producer_index = { + let prods = self.producers.lock().await; + prods.len().saturating_sub(1) + }; + { + let mut tasks = self.tasks.lock().await; + tasks.spawn(async move { + let mut rx = resp_rx; + while let Some(resp) = rx.recv().await { + match resp { + Ok(response) => { + bus.notify(response).await; + } + Err(e) => { + tracing::error!(error = %e, "event_mux: producer response error"); + } + } + } + + // producer disconnected + tracing::warn!(index = producer_index, "event_mux: producer disconnected"); + mux.on_producer_disconnected(producer_index).await; + }); + } + + EventProducer { cmd_rx, resp_tx } + } + + /// Register a new subscriber. + /// + /// Subscriber is automatically cleaned up when channels are closed. + pub async fn add_subscriber(&self) -> EventSubscriber { + let (sub_cmd_tx, sub_cmd_rx) = + mpsc::channel::(COMMAND_CHANNEL_CAPACITY); + let (sub_resp_tx, sub_resp_rx) = + mpsc::channel::(RESPONSE_CHANNEL_CAPACITY); + + let mux = self.clone(); + let subscriber_id = self.next_subscriber_id.fetch_add(1, Ordering::Relaxed) as u64; + + { + let mut tasks = self.tasks.lock().await; + tasks.spawn(async move { + mux.run_subscriber_loop(subscriber_id, sub_cmd_rx, sub_resp_tx) + .await; + }); + } + + EventSubscriber { + cmd_tx: sub_cmd_tx, + resp_rx: sub_resp_rx, + } + } + + async fn run_subscriber_loop( + self, + subscriber_id: u64, + mut sub_cmd_rx: CommandReceiver, + sub_resp_tx: ResponseSender, + ) { + tracing::debug!(subscriber_id, "event_mux: starting subscriber loop"); + + loop { + let cmd = match sub_cmd_rx.recv().await { + Some(Ok(c)) => c, + Some(Err(e)) => { + tracing::warn!(subscriber_id, error=%e, "event_mux: subscriber command error"); + continue; + } + None => { + tracing::debug!( + subscriber_id, + "event_mux: subscriber command channel closed" + ); + break; + } + }; + + if let Some(CmdVersion::V0(v0)) = &cmd.version { + match &v0.command { + Some(Cmd::Add(add)) => { + let id = add.client_subscription_id.clone(); + tracing::debug!(subscriber_id, subscription_id = %id, "event_mux: adding subscription"); + + // If a subscription with this id already exists for this subscriber, + // remove it first to avoid duplicate fan-out and leaked handles. + if let Some((prev_sub_id, prev_handle_id, prev_assigned)) = { + let subs = self.subscriptions.lock().unwrap(); + subs.get(&SubscriptionKey { + subscriber_id, + id: id.clone(), + }) + .map(|info| { + (info.subscriber_id, info.handle.id(), info.assigned_producer) + }) + } { + if prev_sub_id == subscriber_id { + tracing::warn!( + subscriber_id, + subscription_id = %id, + "event_mux: duplicate Add detected, removing previous subscription first" + ); + // Remove previous bus subscription + self.bus.remove_subscription(prev_handle_id).await; + // Notify previously assigned producer about removal + if let Some(prev_idx) = prev_assigned { + if let Some(tx) = self.get_producer_tx(prev_idx).await { + let remove_cmd = PlatformEventsCommand { + version: Some(CmdVersion::V0( + dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0 { + command: Some(Cmd::Remove( + dapi_grpc::platform::v0::RemoveSubscriptionV0 { + client_subscription_id: id.clone(), + }, + )), + }, + )), + }; + if tx.send(Ok(remove_cmd)).await.is_err() { + tracing::debug!( + subscription_id = %id, + "event_mux: failed to send duplicate Remove to producer" + ); + } + } + } + // Drop previous mapping entry (it will be replaced below) + let _ = { + self.subscriptions.lock().unwrap().remove(&SubscriptionKey { + subscriber_id, + id: id.clone(), + }) + }; + } + } + + // Create subscription filtered by client_subscription_id and forward events + let handle = self + .bus + .add_subscription(IdFilter { id: id.clone() }) + .await + .no_unsubscribe_on_drop(); + + { + let mut subs = self.subscriptions.lock().unwrap(); + subs.insert( + SubscriptionKey { + subscriber_id, + id: id.clone(), + }, + SubscriptionInfo { + subscriber_id, + filter: add.filter.clone(), + assigned_producer: None, + handle: handle.clone(), + }, + ); + } + + // Assign producer for this subscription + if let Some((_idx, prod_tx)) = self + .assign_producer_for_subscription(subscriber_id, &id) + .await + { + if prod_tx.send(Ok(cmd)).await.is_err() { + tracing::debug!(subscription_id = %id, "event_mux: failed to send Add to producer - channel closed"); + } + } else { + // TODO: handle no producers available, possibly spawned jobs didn't start yet + tracing::warn!(subscription_id = %id, "event_mux: no producers available for Add"); + } + + // Start fan-out task for this subscription + let tx = sub_resp_tx.clone(); + let mux = self.clone(); + let sub_id = subscriber_id; + let mut tasks = self.tasks.lock().await; + tasks.spawn(async move { + let h = handle; + loop { + match h.recv().await { + Some(resp) => { + if tx.send(Ok(resp)).await.is_err() { + tracing::debug!(subscription_id = %id, "event_mux: failed to send response - subscriber channel closed"); + mux.handle_subscriber_disconnect(sub_id).await; + break; + } + } + None => { + tracing::debug!(subscription_id = %id, "event_mux: subscription ended"); + mux.handle_subscriber_disconnect(sub_id).await; + break; + } + } + } + }); + } + Some(Cmd::Remove(rem)) => { + let id = rem.client_subscription_id.clone(); + tracing::debug!(subscriber_id, subscription_id = %id, "event_mux: removing subscription"); + + // Remove subscription from bus and registry, and get assigned producer + let removed = { + self.subscriptions.lock().unwrap().remove(&SubscriptionKey { + subscriber_id, + id: id.clone(), + }) + }; + let assigned = if let Some(info) = removed { + self.bus.remove_subscription(info.handle.id()).await; + info.assigned_producer + } else { + None + }; + + if let Some(idx) = assigned { + if let Some(tx) = self.get_producer_tx(idx).await { + if tx.send(Ok(cmd)).await.is_err() { + tracing::debug!(subscription_id = %id, "event_mux: failed to send Remove to producer - channel closed"); + self.handle_subscriber_disconnect(subscriber_id).await; + } + } + } + } + _ => {} + } + } + } + + // subscriber disconnected: use the centralized cleanup method + tracing::debug!(subscriber_id, "event_mux: subscriber disconnected"); + self.handle_subscriber_disconnect(subscriber_id).await; + } + + /// Remove a subscriber and clean up all associated resources + pub async fn remove_subscriber(&self, subscriber_id: u64) { + tracing::debug!(subscriber_id, "event_mux: removing subscriber"); + + // Get all subscription IDs for this subscriber by iterating through subscriptions + let keys: Vec = { + let subs = self.subscriptions.lock().unwrap(); + subs.iter() + .filter_map(|(key, info)| { + if info.subscriber_id == subscriber_id { + Some(key.clone()) + } else { + None + } + }) + .collect() + }; + + tracing::debug!( + subscriber_id, + subscription_count = keys.len(), + "event_mux: found subscriptions for subscriber" + ); + + // Remove each subscription from the bus and notify producers + for key in keys { + let id = key.id.clone(); + let removed = { self.subscriptions.lock().unwrap().remove(&key) }; + let assigned = if let Some(info) = removed { + self.bus.remove_subscription(info.handle.id()).await; + tracing::debug!(subscription_id = %id, "event_mux: removed subscription from bus"); + info.assigned_producer + } else { + None + }; + + // Send remove command to assigned producer + if let Some(idx) = assigned { + if let Some(tx) = self.get_producer_tx(idx).await { + let cmd = PlatformEventsCommand { + version: Some(CmdVersion::V0( + dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0 { + command: Some(Cmd::Remove( + dapi_grpc::platform::v0::RemoveSubscriptionV0 { + client_subscription_id: id.clone(), + }, + )), + }, + )), + }; + if tx.send(Ok(cmd)).await.is_err() { + tracing::debug!(subscription_id = %id, "event_mux: failed to send Remove to producer - channel closed"); + } else { + tracing::debug!(subscription_id = %id, "event_mux: sent Remove command to producer"); + } + } + } + } + + tracing::debug!(subscriber_id, "event_mux: subscriber removed"); + } + + async fn assign_producer_for_subscription( + &self, + subscriber_id: u64, + subscription_id: &str, + ) -> Option<(usize, CommandSender)> { + let prods_guard = self.producers.lock().await; + if prods_guard.is_empty() { + return None; + } + // Prefer existing assignment + { + let subs = self.subscriptions.lock().unwrap(); + if let Some(info) = subs.get(&SubscriptionKey { + subscriber_id, + id: subscription_id.to_string(), + }) { + if let Some(idx) = info.assigned_producer { + if let Some(Some(tx)) = prods_guard.get(idx) { + return Some((idx, tx.clone())); + } + } + } + } + // Use round-robin assignment for new subscriptions + let idx = self.rr_counter.fetch_add(1, Ordering::Relaxed) % prods_guard.len(); + let mut chosen_idx = idx; + + // Find first alive producer starting from round-robin position + let chosen = loop { + if let Some(Some(tx)) = prods_guard.get(chosen_idx) { + break Some((chosen_idx, tx.clone())); + } + chosen_idx = (chosen_idx + 1) % prods_guard.len(); + if chosen_idx == idx { + break None; // Cycled through all producers + } + }; + + drop(prods_guard); + if let Some((idx, tx)) = chosen { + if let Some(info) = self + .subscriptions + .lock() + .unwrap() + .get_mut(&SubscriptionKey { + subscriber_id, + id: subscription_id.to_string(), + }) + { + info.assigned_producer = Some(idx); + } + Some((idx, tx)) + } else { + None + } + } + + async fn get_producer_tx(&self, idx: usize) -> Option { + let prods = self.producers.lock().await; + prods.get(idx).and_then(|o| o.as_ref().cloned()) + } + + async fn on_producer_disconnected(&self, index: usize) { + // mark slot None + { + let mut prods = self.producers.lock().await; + if index < prods.len() { + prods[index] = None; + } + } + // collect affected subscribers + let affected_subscribers: BTreeSet = { + let subs = self.subscriptions.lock().unwrap(); + subs.iter() + .filter_map(|(_id, info)| { + if info.assigned_producer == Some(index) { + Some(info.subscriber_id) + } else { + None + } + }) + .collect() + }; + + // Remove all affected subscribers using the centralized method + for sub_id in affected_subscribers { + tracing::warn!( + subscriber_id = sub_id, + producer_index = index, + "event_mux: closing subscriber due to producer disconnect" + ); + self.remove_subscriber(sub_id).await; + } + // Note: reconnection of the actual producer transport is delegated to the caller. + } +} + +// Hashing moved to murmur3::murmur3_32 for deterministic producer selection. + +impl Clone for EventMux { + fn clone(&self) -> Self { + Self { + bus: self.bus.clone(), + producers: self.producers.clone(), + rr_counter: self.rr_counter.clone(), + tasks: self.tasks.clone(), + subscriptions: self.subscriptions.clone(), + next_subscriber_id: self.next_subscriber_id.clone(), + } + } +} + +impl EventMux { + /// Convenience API: subscribe directly with a filter and receive a subscription handle. + /// This method creates an internal subscription keyed by a generated client_subscription_id, + /// assigns a producer, sends the Add command upstream, and returns the id with an event bus handle. + pub async fn subscribe( + &self, + filter: PlatformFilterV0, + ) -> Result<(String, SubscriptionHandle), Status> { + let subscriber_id = self.next_subscriber_id.fetch_add(1, Ordering::Relaxed) as u64; + let id = format!("sub-{}", subscriber_id); + + // Create bus subscription and register mapping + let handle = self.bus.add_subscription(IdFilter { id: id.clone() }).await; + { + let mut subs = self.subscriptions.lock().unwrap(); + subs.insert( + SubscriptionKey { + subscriber_id, + id: id.clone(), + }, + SubscriptionInfo { + subscriber_id, + filter: Some(filter.clone()), + assigned_producer: None, + handle: handle.clone(), + }, + ); + } + + // Assign producer and send Add + if let Some((_idx, tx)) = self + .assign_producer_for_subscription(subscriber_id, &id) + .await + { + let cmd = PlatformEventsCommand { + version: Some(CmdVersion::V0( + dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0 { + command: Some(Cmd::Add(dapi_grpc::platform::v0::AddSubscriptionV0 { + client_subscription_id: id.clone(), + filter: Some(filter.clone()), + })), + }, + )), + }; + if tx.send(Ok(cmd)).await.is_err() { + tracing::debug!( + subscription_id = %id, + "event_mux: failed to send Add to assigned producer" + ); + } + + Ok((id, handle)) + } else { + tracing::warn!(subscription_id = %id, "event_mux: no producers available for Add"); + Err(Status::unavailable("no producers available")) + } + } +} + +/// Handle used by application code to implement a concrete producer. +/// - `cmd_rx`: read commands from the mux +/// - `resp_tx`: send generated responses into the mux +pub struct EventProducer { + pub cmd_rx: CommandReceiver, + pub resp_tx: ResponseSender, +} + +impl EventProducer { + /// Forward all messages from cmd_rx to self.cmd_tx and form resp_rx to self.resp_tx + pub async fn forward(self, mut cmd_tx: C, resp_rx: R) + where + C: futures::Sink + Unpin + Send + 'static, + R: futures::Stream + Unpin + Send + 'static, + // R: AsyncRead + Unpin + ?Sized, + // W: AsyncWrite + Unpin + ?Sized, + { + use futures::stream::StreamExt; + + let mut cmd_rx = self.cmd_rx; + + let resp_tx = self.resp_tx; + // let workers = JoinSet::new(); + let cmd_worker = tokio::spawn(async move { + while let Some(cmd) = cmd_rx.recv().await { + if cmd_tx.send(cmd).await.is_err() { + tracing::warn!("event_mux: failed to forward command to producer"); + break; + } + } + tracing::error!("event_mux: command channel closed, stopping producer forwarder"); + }); + + let resp_worker = tokio::spawn(async move { + let mut rx = resp_rx; + while let Some(resp) = rx.next().await { + if resp_tx.send(resp).await.is_err() { + tracing::warn!("event_mux: failed to forward response to mux"); + break; + } + } + tracing::error!( + "event_mux: response channel closed, stopping producer response forwarder" + ); + }); + + let _ = join!(cmd_worker, resp_worker); + } +} +/// Handle used by application code to implement a concrete subscriber. +/// Subscriber is automatically cleaned up when channels are closed. +pub struct EventSubscriber { + pub cmd_tx: CommandSender, + pub resp_rx: ResponseReceiver, +} + +impl EventSubscriber { + /// Forward all messages from cmd_rx to self.cmd_tx and from self.resp_rx to resp_tx + pub async fn forward(self, cmd_rx: C, mut resp_tx: R) + where + C: futures::Stream + Unpin + Send + 'static, + R: futures::Sink + Unpin + Send + 'static, + { + use futures::stream::StreamExt; + + let cmd_tx = self.cmd_tx; + let mut resp_rx = self.resp_rx; + + let cmd_worker = tokio::spawn(async move { + let mut rx = cmd_rx; + while let Some(cmd) = rx.next().await { + if cmd_tx.send(cmd).await.is_err() { + tracing::warn!("event_mux: failed to forward command from subscriber"); + break; + } + } + tracing::error!( + "event_mux: subscriber command channel closed, stopping command forwarder" + ); + }); + + let resp_worker = tokio::spawn(async move { + while let Some(resp) = resp_rx.recv().await { + if resp_tx.send(resp).await.is_err() { + tracing::warn!("event_mux: failed to forward response to subscriber"); + break; + } + } + tracing::error!( + "event_mux: subscriber response channel closed, stopping response forwarder" + ); + }); + + let _ = join!(cmd_worker, resp_worker); + } +} // ---- Filters ---- + +#[derive(Clone, Debug)] +pub struct IdFilter { + id: String, +} + +impl EventFilter for IdFilter { + fn matches(&self, event: &PlatformEventsResponse) -> bool { + if let Some(dapi_grpc::platform::v0::platform_events_response::Version::V0(v0)) = + &event.version + { + match &v0.response { + Some(Resp::Event(ev)) => ev.client_subscription_id == self.id, + Some(Resp::Ack(ack)) => ack.client_subscription_id == self.id, + Some(Resp::Error(err)) => err.client_subscription_id == self.id, + None => false, + } + } else { + false + } + } +} + +struct SubscriptionInfo { + subscriber_id: u64, + #[allow(dead_code)] + filter: Option, + assigned_producer: Option, + handle: SubscriptionHandle, +} + +#[derive(Clone, Ord, PartialOrd, Eq, PartialEq, Debug)] +struct SubscriptionKey { + subscriber_id: u64, + id: String, +} + +/// Public alias for platform events subscription handle used by SDK and DAPI. +pub type PlatformEventsSubscriptionHandle = SubscriptionHandle; + +/// Create a bounded Sink from an mpsc Sender that maps errors to tonic::Status +pub fn sender_sink( + sender: mpsc::Sender, +) -> impl futures::Sink { + Box::pin( + PollSender::new(sender) + .sink_map_err(|_| Status::internal("Failed to send command to PlatformEventsMux")), + ) +} + +/// Create a bounded Sink that accepts `Result` and forwards `Ok(T)` through the sender +/// while propagating errors. +pub fn result_sender_sink( + sender: mpsc::Sender, +) -> impl futures::Sink, Error = Status> { + Box::pin( + PollSender::new(sender) + .sink_map_err(|_| Status::internal("Failed to send command to PlatformEventsMux")) + .with(|value| async move { value }), + ) +} + +#[cfg(test)] +mod tests { + use super::sender_sink; + use super::*; + use dapi_grpc::platform::v0::platform_event_v0 as pe; + use dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0; + use dapi_grpc::platform::v0::platform_events_response::PlatformEventsResponseV0; + use dapi_grpc::platform::v0::{PlatformEventMessageV0, PlatformEventV0, PlatformFilterV0}; + use std::collections::HashMap; + use tokio::time::{timeout, Duration}; + + fn make_add_cmd(id: &str) -> PlatformEventsCommand { + PlatformEventsCommand { + version: Some(CmdVersion::V0(PlatformEventsCommandV0 { + command: Some(Cmd::Add(dapi_grpc::platform::v0::AddSubscriptionV0 { + client_subscription_id: id.to_string(), + filter: Some(PlatformFilterV0::default()), + })), + })), + } + } + + fn make_event_resp(id: &str) -> PlatformEventsResponse { + let meta = pe::BlockMetadata { + height: 1, + time_ms: 0, + block_id_hash: vec![], + }; + let evt = PlatformEventV0 { + event: Some(pe::Event::BlockCommitted(pe::BlockCommitted { + meta: Some(meta), + tx_count: 0, + })), + }; + + PlatformEventsResponse { + version: Some( + dapi_grpc::platform::v0::platform_events_response::Version::V0( + PlatformEventsResponseV0 { + response: Some(Resp::Event(PlatformEventMessageV0 { + client_subscription_id: id.to_string(), + event: Some(evt), + })), + }, + ), + ), + } + } + + #[tokio::test] + async fn should_deliver_events_once_per_subscriber_with_shared_id() { + let mux = EventMux::new(); + + // Single producer captures Add/Remove commands and accepts responses + let EventProducer { + mut cmd_rx, + resp_tx, + } = mux.add_producer().await; + + // Two subscribers share the same client_subscription_id + let EventSubscriber { + cmd_tx: sub1_cmd_tx, + resp_rx: mut resp_rx1, + } = mux.add_subscriber().await; + let EventSubscriber { + cmd_tx: sub2_cmd_tx, + resp_rx: mut resp_rx2, + } = mux.add_subscriber().await; + + let sub_id = "dup-sub"; + + sub1_cmd_tx + .send(Ok(make_add_cmd(sub_id))) + .await + .expect("send add for subscriber 1"); + sub2_cmd_tx + .send(Ok(make_add_cmd(sub_id))) + .await + .expect("send add for subscriber 2"); + + // Ensure producer receives both Add commands + for _ in 0..2 { + let got = timeout(Duration::from_secs(1), cmd_rx.recv()) + .await + .expect("timeout waiting for Add") + .expect("producer channel closed") + .expect("Add command error"); + match got.version.and_then(|v| match v { + CmdVersion::V0(v0) => v0.command, + }) { + Some(Cmd::Add(a)) => assert_eq!(a.client_subscription_id, sub_id), + other => panic!("expected Add command, got {:?}", other), + } + } + + // Emit a single event targeting the shared subscription id + resp_tx + .send(Ok(make_event_resp(sub_id))) + .await + .expect("failed to send event into mux"); + + let extract_id = |resp: PlatformEventsResponse| -> String { + match resp.version.and_then(|v| match v { + dapi_grpc::platform::v0::platform_events_response::Version::V0(v0) => { + v0.response.and_then(|r| match r { + Resp::Event(m) => Some(m.client_subscription_id), + _ => None, + }) + } + }) { + Some(id) => id, + None => panic!("unexpected response variant"), + } + }; + + let ev1 = timeout(Duration::from_secs(1), resp_rx1.recv()) + .await + .expect("timeout waiting for subscriber1 event") + .expect("subscriber1 channel closed") + .expect("subscriber1 event error"); + let ev2 = timeout(Duration::from_secs(1), resp_rx2.recv()) + .await + .expect("timeout waiting for subscriber2 event") + .expect("subscriber2 channel closed") + .expect("subscriber2 event error"); + + assert_eq!(extract_id(ev1), sub_id); + assert_eq!(extract_id(ev2), sub_id); + + // Ensure no duplicate deliveries per subscriber + assert!(timeout(Duration::from_millis(100), resp_rx1.recv()) + .await + .is_err()); + assert!(timeout(Duration::from_millis(100), resp_rx2.recv()) + .await + .is_err()); + + // Drop subscribers to trigger Remove for both + drop(sub1_cmd_tx); + drop(resp_rx1); + drop(sub2_cmd_tx); + drop(resp_rx2); + + for _ in 0..2 { + let got = timeout(Duration::from_secs(1), cmd_rx.recv()) + .await + .expect("timeout waiting for Remove") + .expect("producer channel closed") + .expect("Remove command error"); + match got.version.and_then(|v| match v { + CmdVersion::V0(v0) => v0.command, + }) { + Some(Cmd::Remove(r)) => assert_eq!(r.client_subscription_id, sub_id), + other => panic!("expected Remove command, got {:?}", other), + } + } + } + + #[tokio::test] + async fn mux_chain_three_layers_delivers_once_per_subscriber() { + use tokio_stream::wrappers::ReceiverStream; + + // Build three muxes + let mux1 = EventMux::new(); + let mux2 = EventMux::new(); + let mux3 = EventMux::new(); + + // Bridge: Mux1 -> Producer1a -> Subscriber2a -> Mux2 + // and Mux1 -> Producer1b -> Subscriber2b -> Mux2 + let prod1a = mux1.add_producer().await; + let sub2a = mux2.add_subscriber().await; + // Use a sink that accepts EventsCommandResult directly (no extra Result nesting) + let sub2a_cmd_sink = sender_sink(sub2a.cmd_tx.clone()); + let sub2a_resp_stream = ReceiverStream::new(sub2a.resp_rx); + tokio::spawn(async move { prod1a.forward(sub2a_cmd_sink, sub2a_resp_stream).await }); + + let prod1b = mux1.add_producer().await; + let sub2b = mux2.add_subscriber().await; + let sub2b_cmd_sink = sender_sink(sub2b.cmd_tx.clone()); + let sub2b_resp_stream = ReceiverStream::new(sub2b.resp_rx); + tokio::spawn(async move { prod1b.forward(sub2b_cmd_sink, sub2b_resp_stream).await }); + + // Bridge: Mux2 -> Producer2 -> Subscriber3 -> Mux3 + let prod2 = mux2.add_producer().await; + let sub3 = mux3.add_subscriber().await; + let sub3_cmd_sink = sender_sink(sub3.cmd_tx.clone()); + let sub3_resp_stream = ReceiverStream::new(sub3.resp_rx); + tokio::spawn(async move { prod2.forward(sub3_cmd_sink, sub3_resp_stream).await }); + + // Deepest producers where we will capture commands and inject events + let p3a = mux3.add_producer().await; + let p3b = mux3.add_producer().await; + let mut p3a_cmd_rx = p3a.cmd_rx; + let p3a_resp_tx = p3a.resp_tx; + let mut p3b_cmd_rx = p3b.cmd_rx; + let p3b_resp_tx = p3b.resp_tx; + + // Three top-level subscribers on Mux1 + let mut sub1a = mux1.add_subscriber().await; + let mut sub1b = mux1.add_subscriber().await; + let mut sub1c = mux1.add_subscriber().await; + let id_a = "s1a"; + let id_b = "s1b"; + let id_c = "s1c"; + + // Send Add commands downstream from each subscriber + sub1a + .cmd_tx + .send(Ok(make_add_cmd(id_a))) + .await + .expect("send add a"); + sub1b + .cmd_tx + .send(Ok(make_add_cmd(id_b))) + .await + .expect("send add b"); + sub1c + .cmd_tx + .send(Ok(make_add_cmd(id_c))) + .await + .expect("send add c"); + + // Ensure deepest producers receive each Add exactly once and not on both + let mut assigned: HashMap = HashMap::new(); + for _ in 0..3 { + let (which, got_opt) = timeout(Duration::from_secs(2), async { + tokio::select! { + c = p3a_cmd_rx.recv() => (0usize, c), + c = p3b_cmd_rx.recv() => (1usize, c), + } + }) + .await + .expect("timeout waiting for downstream add"); + + let got = got_opt + .expect("p3 cmd channel closed") + .expect("downstream add error"); + + match got.version.and_then(|v| match v { + CmdVersion::V0(v0) => v0.command, + }) { + Some(Cmd::Add(a)) => { + let id = a.client_subscription_id; + if let Some(prev) = assigned.insert(id.clone(), which) { + panic!( + "subscription {} was dispatched to two producers: {} and {}", + id, prev, which + ); + } + } + _ => panic!("expected Add at deepest producer"), + } + } + assert!( + assigned.contains_key(id_a) + && assigned.contains_key(id_b) + && assigned.contains_key(id_c) + ); + + // Emit one event per subscription id via the assigned deepest producer + match assigned.get(id_a) { + Some(0) => p3a_resp_tx + .send(Ok(make_event_resp(id_a))) + .await + .expect("emit event a"), + Some(1) => p3b_resp_tx + .send(Ok(make_event_resp(id_a))) + .await + .expect("emit event a"), + _ => panic!("missing assignment for id_a"), + } + match assigned.get(id_b) { + Some(0) => p3a_resp_tx + .send(Ok(make_event_resp(id_b))) + .await + .expect("emit event b"), + Some(1) => p3b_resp_tx + .send(Ok(make_event_resp(id_b))) + .await + .expect("emit event b"), + _ => panic!("missing assignment for id_b"), + } + match assigned.get(id_c) { + Some(0) => p3a_resp_tx + .send(Ok(make_event_resp(id_c))) + .await + .expect("emit event c"), + Some(1) => p3b_resp_tx + .send(Ok(make_event_resp(id_c))) + .await + .expect("emit event c"), + _ => panic!("missing assignment for id_c"), + } + + // Receive each exactly once at the top-level subscribers + let a_first = timeout(Duration::from_secs(2), sub1a.resp_rx.recv()) + .await + .expect("timeout waiting for a event") + .expect("a subscriber closed") + .expect("a event error"); + let b_first = timeout(Duration::from_secs(2), sub1b.resp_rx.recv()) + .await + .expect("timeout waiting for b event") + .expect("b subscriber closed") + .expect("b event error"); + let c_first = timeout(Duration::from_secs(2), sub1c.resp_rx.recv()) + .await + .expect("timeout waiting for c event") + .expect("c subscriber closed") + .expect("c event error"); + + let get_id = |resp: PlatformEventsResponse| -> String { + match resp.version.and_then(|v| match v { + dapi_grpc::platform::v0::platform_events_response::Version::V0(v0) => { + v0.response.and_then(|r| match r { + Resp::Event(m) => Some(m.client_subscription_id), + _ => None, + }) + } + }) { + Some(id) => id, + None => panic!("unexpected response variant"), + } + }; + + assert_eq!(get_id(a_first.clone()), id_a); + assert_eq!(get_id(b_first.clone()), id_b); + assert_eq!(get_id(c_first.clone()), id_c); + + // Ensure no duplicates by timing out on the next recv + let a_dup = timeout(Duration::from_millis(200), sub1a.resp_rx.recv()).await; + assert!(a_dup.is_err(), "unexpected duplicate for subscriber a"); + let b_dup = timeout(Duration::from_millis(200), sub1b.resp_rx.recv()).await; + assert!(b_dup.is_err(), "unexpected duplicate for subscriber b"); + let c_dup = timeout(Duration::from_millis(200), sub1c.resp_rx.recv()).await; + assert!(c_dup.is_err(), "unexpected duplicate for subscriber c"); + } +} diff --git a/packages/rs-dash-event-bus/src/grpc_producer.rs b/packages/rs-dash-event-bus/src/grpc_producer.rs new file mode 100644 index 00000000000..88257c96a9f --- /dev/null +++ b/packages/rs-dash-event-bus/src/grpc_producer.rs @@ -0,0 +1,52 @@ +use dapi_grpc::platform::v0::platform_client::PlatformClient; +use dapi_grpc::platform::v0::PlatformEventsCommand; +use dapi_grpc::tonic::Status; +use tokio::sync::mpsc; +use tokio::sync::oneshot; +use tokio_stream::wrappers::ReceiverStream; + +use crate::event_mux::{result_sender_sink, EventMux}; + +const UPSTREAM_COMMAND_BUFFER: usize = 128; + +/// A reusable gRPC producer that bridges a Platform gRPC client with an [`EventMux`]. +/// +/// Creates bi-directional channels, subscribes upstream using the provided client, +/// and forwards commands/responses between the upstream stream and the mux. +pub struct GrpcPlatformEventsProducer; + +impl GrpcPlatformEventsProducer { + /// Connect the provided `client` to the `mux` and forward messages until completion. + /// + /// The `ready` receiver is used to signal when the producer has started. + pub async fn run( + mux: EventMux, + mut client: PlatformClient, + ready: oneshot::Sender<()>, + ) -> Result<(), Status> + where + // C: DapiRequestExecutor, + C: dapi_grpc::tonic::client::GrpcService, + C::Error: Into, + C::ResponseBody: dapi_grpc::tonic::codegen::Body + + Send + + 'static, + ::Error: + Into + Send, + { + let (cmd_tx, cmd_rx) = mpsc::channel::(UPSTREAM_COMMAND_BUFFER); + tracing::debug!("connecting gRPC producer to upstream"); + let resp_stream = client + .subscribe_platform_events(ReceiverStream::new(cmd_rx)) + .await?; + let cmd_sink = result_sender_sink(cmd_tx); + let resp_rx = resp_stream.into_inner(); + + tracing::debug!("registering gRPC producer with mux"); + let producer = mux.add_producer().await; + tracing::debug!("gRPC producer connected to mux and ready, starting forward loop"); + ready.send(()).ok(); + producer.forward(cmd_sink, resp_rx).await; + Ok(()) + } +} diff --git a/packages/rs-dash-event-bus/src/lib.rs b/packages/rs-dash-event-bus/src/lib.rs new file mode 100644 index 00000000000..7a6bf468fe2 --- /dev/null +++ b/packages/rs-dash-event-bus/src/lib.rs @@ -0,0 +1,17 @@ +//! rs-dash-event-bus: shared event bus and Platform events multiplexer +//! +//! - `event_bus`: generic in-process pub/sub with pluggable filtering +//! - `platform_mux`: upstream bi-di gRPC multiplexer for Platform events + +pub mod event_bus; +pub mod event_mux; +pub mod grpc_producer; +pub mod local_bus_producer; + +pub use event_bus::{EventBus, Filter, SubscriptionHandle}; +pub use event_mux::{ + result_sender_sink, sender_sink, EventMux, EventProducer, EventSubscriber, + PlatformEventsSubscriptionHandle, +}; +pub use grpc_producer::GrpcPlatformEventsProducer; +pub use local_bus_producer::run_local_platform_events_producer; diff --git a/packages/rs-dash-event-bus/src/local_bus_producer.rs b/packages/rs-dash-event-bus/src/local_bus_producer.rs new file mode 100644 index 00000000000..51b63938090 --- /dev/null +++ b/packages/rs-dash-event-bus/src/local_bus_producer.rs @@ -0,0 +1,175 @@ +use crate::event_bus::{EventBus, SubscriptionHandle}; +use crate::event_mux::EventMux; +use dapi_grpc::platform::v0::platform_events_command::platform_events_command_v0::Command as Cmd; +use dapi_grpc::platform::v0::platform_events_command::Version as CmdVersion; +use dapi_grpc::platform::v0::platform_events_response::platform_events_response_v0::Response as Resp; +// already imported below +use dapi_grpc::platform::v0::platform_events_response::{ + PlatformEventsResponseV0, Version as RespVersion, +}; +// keep single RespVersion import +use dapi_grpc::platform::v0::{ + PlatformEventMessageV0, PlatformEventV0, PlatformEventsResponse, PlatformFilterV0, +}; +use std::collections::HashMap; +use std::fmt::Debug; +use std::sync::Arc; + +/// Runs a local producer that bridges EventMux commands to a local EventBus of Platform events. +/// +/// - `mux`: the shared EventMux instance to attach as a producer +/// - `event_bus`: local bus emitting `PlatformEventV0` events +/// - `make_adapter`: function to convert incoming `PlatformFilterV0` into a bus filter type `F` +pub async fn run_local_platform_events_producer( + mux: EventMux, + event_bus: EventBus, + make_adapter: Arc F + Send + Sync>, +) where + F: crate::event_bus::Filter + Send + Sync + Debug + 'static, +{ + let producer = mux.add_producer().await; + let mut cmd_rx = producer.cmd_rx; + let resp_tx = producer.resp_tx; + + let mut subs: HashMap> = HashMap::new(); + + while let Some(cmd_res) = cmd_rx.recv().await { + match cmd_res { + Ok(cmd) => { + let v0 = match cmd.version { + Some(CmdVersion::V0(v0)) => v0, + None => { + let err = PlatformEventsResponse { + version: Some(RespVersion::V0(PlatformEventsResponseV0 { + response: Some(Resp::Error( + dapi_grpc::platform::v0::PlatformErrorV0 { + client_subscription_id: "".to_string(), + code: 400, + message: "missing version".to_string(), + }, + )), + })), + }; + if resp_tx.send(Ok(err)).await.is_err() { + tracing::warn!("local producer failed to send missing version error"); + } + continue; + } + }; + match v0.command { + Some(Cmd::Add(add)) => { + let id = add.client_subscription_id; + let adapter = (make_adapter)(add.filter.unwrap_or_default()); + let handle = event_bus.add_subscription(adapter).await; + + // Start forwarding events for this subscription + let id_for = id.clone(); + let handle_clone = handle.clone(); + let resp_tx_clone = resp_tx.clone(); + tokio::spawn(async move { + forward_local_events(handle_clone, &id_for, resp_tx_clone).await; + }); + + subs.insert(id.clone(), handle); + + // Ack + let ack = PlatformEventsResponse { + version: Some(RespVersion::V0(PlatformEventsResponseV0 { + response: Some(Resp::Ack(dapi_grpc::platform::v0::AckV0 { + client_subscription_id: id, + op: "add".to_string(), + })), + })), + }; + if resp_tx.send(Ok(ack)).await.is_err() { + tracing::warn!("local producer failed to send add ack"); + } + } + Some(Cmd::Remove(rem)) => { + let id = rem.client_subscription_id; + if subs.remove(&id).is_some() { + let ack = PlatformEventsResponse { + version: Some(RespVersion::V0(PlatformEventsResponseV0 { + response: Some(Resp::Ack(dapi_grpc::platform::v0::AckV0 { + client_subscription_id: id, + op: "remove".to_string(), + })), + })), + }; + if resp_tx.send(Ok(ack)).await.is_err() { + tracing::warn!("local producer failed to send remove ack"); + } + } + } + Some(Cmd::Ping(p)) => { + let ack = PlatformEventsResponse { + version: Some(RespVersion::V0(PlatformEventsResponseV0 { + response: Some(Resp::Ack(dapi_grpc::platform::v0::AckV0 { + client_subscription_id: p.nonce.to_string(), + op: "ping".to_string(), + })), + })), + }; + if resp_tx.send(Ok(ack)).await.is_err() { + tracing::warn!("local producer failed to send ping ack"); + } + } + None => { + let err = PlatformEventsResponse { + version: Some(RespVersion::V0(PlatformEventsResponseV0 { + response: Some(Resp::Error( + dapi_grpc::platform::v0::PlatformErrorV0 { + client_subscription_id: "".to_string(), + code: 400, + message: "missing command".to_string(), + }, + )), + })), + }; + if resp_tx.send(Ok(err)).await.is_err() { + tracing::warn!("local producer failed to send missing command error"); + } + } + } + } + Err(e) => { + tracing::warn!("local producer received error command: {}", e); + let err = PlatformEventsResponse { + version: Some(RespVersion::V0(PlatformEventsResponseV0 { + response: Some(Resp::Error(dapi_grpc::platform::v0::PlatformErrorV0 { + client_subscription_id: "".to_string(), + code: 500, + message: format!("{}", e), + })), + })), + }; + if resp_tx.send(Ok(err)).await.is_err() { + tracing::warn!("local producer failed to send upstream error"); + } + } + } + } +} + +async fn forward_local_events( + subscription: SubscriptionHandle, + client_subscription_id: &str, + forward_tx: crate::event_mux::ResponseSender, +) where + F: crate::event_bus::Filter + Send + Sync + 'static, +{ + while let Some(evt) = subscription.recv().await { + let resp = PlatformEventsResponse { + version: Some(RespVersion::V0(PlatformEventsResponseV0 { + response: Some(Resp::Event(PlatformEventMessageV0 { + client_subscription_id: client_subscription_id.to_string(), + event: Some(evt), + })), + })), + }; + if forward_tx.send(Ok(resp)).await.is_err() { + tracing::warn!("client disconnected, stopping local event forwarding"); + break; + } + } +} diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 12b2f01974d..a8b9e3b0bb0 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -62,7 +62,7 @@ reopen = { version = "1.0.3" } delegate = { version = "0.13" } regex = { version = "1.8.1" } metrics = { version = "0.24" } -metrics-exporter-prometheus = { version = "0.16", default-features = false, features = [ +metrics-exporter-prometheus = { version = "0.17", default-features = false, features = [ "http-listener", ] } url = { version = "2.3.1" } @@ -73,10 +73,13 @@ tokio = { version = "1.40", features = [ "time", ] } tokio-util = { version = "0.7" } +tokio-stream = { version = "0.1" } derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev="0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } +rs-dash-event-bus = { path = "../rs-dash-event-bus" } +sha2 = { version = "0.10" } [dev-dependencies] bs58 = { version = "0.5.0" } diff --git a/packages/rs-drive-abci/src/abci/app/consensus.rs b/packages/rs-drive-abci/src/abci/app/consensus.rs index d2145d1e4b0..85909a0287d 100644 --- a/packages/rs-drive-abci/src/abci/app/consensus.rs +++ b/packages/rs-drive-abci/src/abci/app/consensus.rs @@ -1,11 +1,16 @@ -use crate::abci::app::{BlockExecutionApplication, PlatformApplication, TransactionalApplication}; +use crate::abci::app::{ + BlockExecutionApplication, EventBusApplication, PlatformApplication, TransactionalApplication, +}; use crate::abci::handler; use crate::abci::handler::error::error_into_exception; use crate::error::execution::ExecutionError; use crate::error::Error; use crate::execution::types::block_execution_context::BlockExecutionContext; use crate::platform_types::platform::Platform; +use crate::query::PlatformFilterAdapter; use crate::rpc::core::CoreRPCLike; +use dapi_grpc::platform::v0::PlatformEventV0; +use dash_event_bus::event_bus::EventBus; use dpp::version::PlatformVersion; use drive::grovedb::Transaction; use std::fmt::Debug; @@ -23,15 +28,21 @@ pub struct ConsensusAbciApplication<'a, C> { transaction: RwLock>>, /// The current block execution context block_execution_context: RwLock>, + /// In-process Platform event bus used to publish events at finalize_block + event_bus: EventBus, } impl<'a, C> ConsensusAbciApplication<'a, C> { /// Create new ABCI app - pub fn new(platform: &'a Platform) -> Self { + pub fn new( + platform: &'a Platform, + event_bus: EventBus, + ) -> Self { Self { platform, transaction: Default::default(), block_execution_context: Default::default(), + event_bus, } } } @@ -48,6 +59,12 @@ impl BlockExecutionApplication for ConsensusAbciApplication<'_, C> { } } +impl EventBusApplication for ConsensusAbciApplication<'_, C> { + fn event_bus(&self) -> &EventBus { + &self.event_bus + } +} + impl<'a, C> TransactionalApplication<'a> for ConsensusAbciApplication<'a, C> { /// create and store a new transaction fn start_transaction(&self) { diff --git a/packages/rs-drive-abci/src/abci/app/full.rs b/packages/rs-drive-abci/src/abci/app/full.rs index 542bce32668..b7c8861d4f8 100644 --- a/packages/rs-drive-abci/src/abci/app/full.rs +++ b/packages/rs-drive-abci/src/abci/app/full.rs @@ -1,13 +1,18 @@ -use crate::abci::app::{BlockExecutionApplication, PlatformApplication, TransactionalApplication}; +use crate::abci::app::{ + BlockExecutionApplication, EventBusApplication, PlatformApplication, TransactionalApplication, +}; use crate::abci::handler; use crate::abci::handler::error::error_into_exception; use crate::error::execution::ExecutionError; use crate::error::Error; use crate::execution::types::block_execution_context::BlockExecutionContext; use crate::platform_types::platform::Platform; +use crate::query::PlatformFilterAdapter; use crate::rpc::core::CoreRPCLike; +use dapi_grpc::platform::v0::PlatformEventV0; use dpp::version::PlatformVersion; use drive::grovedb::Transaction; +use dash_event_bus::event_bus::EventBus; use std::fmt::Debug; use std::sync::RwLock; use tenderdash_abci::proto::abci as proto; @@ -23,6 +28,8 @@ pub struct FullAbciApplication<'a, C> { pub transaction: RwLock>>, /// The current block execution context pub block_execution_context: RwLock>, + /// In-process Platform event bus used to publish events at finalize_block + pub event_bus: EventBus, } impl<'a, C> FullAbciApplication<'a, C> { @@ -32,6 +39,7 @@ impl<'a, C> FullAbciApplication<'a, C> { platform, transaction: Default::default(), block_execution_context: Default::default(), + event_bus: EventBus::new(), } } } @@ -48,6 +56,12 @@ impl BlockExecutionApplication for FullAbciApplication<'_, C> { } } +impl EventBusApplication for FullAbciApplication<'_, C> { + fn event_bus(&self) -> &EventBus { + &self.event_bus + } +} + impl<'a, C> TransactionalApplication<'a> for FullAbciApplication<'a, C> { /// create and store a new transaction fn start_transaction(&self) { diff --git a/packages/rs-drive-abci/src/abci/app/mod.rs b/packages/rs-drive-abci/src/abci/app/mod.rs index d86290b566b..2c44f92bcd2 100644 --- a/packages/rs-drive-abci/src/abci/app/mod.rs +++ b/packages/rs-drive-abci/src/abci/app/mod.rs @@ -10,12 +10,22 @@ pub mod execution_result; mod full; use crate::execution::types::block_execution_context::BlockExecutionContext; +use crate::query::PlatformFilterAdapter; use crate::rpc::core::DefaultCoreRPC; pub use check_tx::CheckTxAbciApplication; pub use consensus::ConsensusAbciApplication; +use dash_event_bus::event_bus::EventBus; use dpp::version::PlatformVersion; pub use full::FullAbciApplication; +/// Provides access to the in-process Platform event bus +pub trait EventBusApplication { + /// Returns the Platform `EventBus` used for publishing Platform events + fn event_bus( + &self, + ) -> &EventBus; +} + /// Platform-based ABCI application pub trait PlatformApplication { /// Returns Platform diff --git a/packages/rs-drive-abci/src/abci/handler/finalize_block.rs b/packages/rs-drive-abci/src/abci/handler/finalize_block.rs index 852f85cc6b8..396f8680a9b 100644 --- a/packages/rs-drive-abci/src/abci/handler/finalize_block.rs +++ b/packages/rs-drive-abci/src/abci/handler/finalize_block.rs @@ -1,11 +1,16 @@ -use crate::abci::app::{BlockExecutionApplication, PlatformApplication, TransactionalApplication}; +use crate::abci::app::{ + BlockExecutionApplication, EventBusApplication, PlatformApplication, TransactionalApplication, +}; use crate::error::execution::ExecutionError; use crate::error::Error; use crate::execution::types::block_execution_context::v0::BlockExecutionContextV0Getters; use crate::platform_types::cleaned_abci_messages::finalized_block_cleaned_request::v0::FinalizeBlockCleanedRequest; use crate::platform_types::platform_state::v0::PlatformStateV0Methods; +use crate::query::PlatformFilterAdapter; use crate::rpc::core::CoreRPCLike; +use dapi_grpc::platform::v0::{platform_event_v0, PlatformEventV0}; use dpp::dashcore::Network; +use sha2::{Digest, Sha256}; use std::sync::atomic::Ordering; use tenderdash_abci::proto::abci as proto; @@ -14,7 +19,10 @@ pub fn finalize_block<'a, A, C>( request: proto::RequestFinalizeBlock, ) -> Result where - A: PlatformApplication + TransactionalApplication<'a> + BlockExecutionApplication, + A: PlatformApplication + + TransactionalApplication<'a> + + BlockExecutionApplication + + EventBusApplication, C: CoreRPCLike, { let _timer = crate::metrics::abci_request_duration("finalize_block"); @@ -46,7 +54,7 @@ where let block_height = request_finalize_block.height; let block_finalization_outcome = app.platform().finalize_block_proposal( - request_finalize_block, + request_finalize_block.clone(), block_execution_context, transaction, platform_version, @@ -96,5 +104,76 @@ where .committed_block_height_guard .store(block_height, Ordering::Relaxed); + let bus = app.event_bus().clone(); + + publish_block_committed_event(&bus, &request_finalize_block)?; + publish_state_transition_result_events(&bus, &request_finalize_block)?; + Ok(proto::ResponseFinalizeBlock { retain_height: 0 }) } + +fn publish_block_committed_event( + event_bus: &dash_event_bus::event_bus::EventBus, + request_finalize_block: &FinalizeBlockCleanedRequest, +) -> Result<(), Error> { + // Publish BlockCommitted platform event to the global event bus (best-effort) + let header_time = request_finalize_block.block.header.time; + let seconds = header_time.seconds as i128; + let nanos = header_time.nanos as i128; + let time_ms = (seconds * 1000) + (nanos / 1_000_000); + + let meta = platform_event_v0::BlockMetadata { + height: request_finalize_block.height, + time_ms: time_ms as u64, + block_id_hash: request_finalize_block.block_id.hash.to_vec(), + }; + + // Number of txs in this block + let tx_count = request_finalize_block.block.data.txs.len() as u32; + + let block_committed = platform_event_v0::BlockCommitted { + meta: Some(meta), + tx_count, + }; + + let event = PlatformEventV0 { + event: Some(platform_event_v0::Event::BlockCommitted(block_committed)), + }; + + event_bus.notify_sync(event); + + Ok(()) +} + +fn publish_state_transition_result_events( + event_bus: &dash_event_bus::event_bus::EventBus, + request_finalize_block: &FinalizeBlockCleanedRequest, +) -> Result<(), Error> { + // Prepare BlockMetadata once + let header_time = request_finalize_block.block.header.time; + let seconds = header_time.seconds as i128; + let nanos = header_time.nanos as i128; + let time_ms = (seconds * 1000) + (nanos / 1_000_000); + + let meta = platform_event_v0::BlockMetadata { + height: request_finalize_block.height, + time_ms: time_ms as u64, + block_id_hash: request_finalize_block.block_id.hash.to_vec(), + }; + + // For each tx in the block, compute hash and emit a StateTransitionResult + for tx in &request_finalize_block.block.data.txs { + let tx_hash = Sha256::digest(tx); + let event = PlatformEventV0 { + event: Some(platform_event_v0::Event::StateTransitionFinalized( + platform_event_v0::StateTransitionFinalized { + meta: Some(meta.clone()), + tx_hash: tx_hash.to_vec(), + }, + )), + }; + event_bus.notify_sync(event); + } + + Ok(()) +} diff --git a/packages/rs-drive-abci/src/query/mod.rs b/packages/rs-drive-abci/src/query/mod.rs index 0e161b1ae19..d298ff069cf 100644 --- a/packages/rs-drive-abci/src/query/mod.rs +++ b/packages/rs-drive-abci/src/query/mod.rs @@ -15,6 +15,7 @@ use crate::error::query::QueryError; use dpp::validation::ValidationResult; +pub use service::PlatformFilterAdapter; pub use service::QueryService; /// A query validation result diff --git a/packages/rs-drive-abci/src/query/service.rs b/packages/rs-drive-abci/src/query/service.rs index f5c7dacc4b8..3efe5fd3dbf 100644 --- a/packages/rs-drive-abci/src/query/service.rs +++ b/packages/rs-drive-abci/src/query/service.rs @@ -47,20 +47,33 @@ use dapi_grpc::platform::v0::{ GetTokenPreProgrammedDistributionsResponse, GetTokenStatusesRequest, GetTokenStatusesResponse, GetTokenTotalSupplyRequest, GetTokenTotalSupplyResponse, GetTotalCreditsInPlatformRequest, GetTotalCreditsInPlatformResponse, GetVotePollsByEndDateRequest, GetVotePollsByEndDateResponse, + PlatformEventV0 as PlatformEvent, PlatformEventsCommand, PlatformEventsResponse, WaitForStateTransitionResultRequest, WaitForStateTransitionResultResponse, }; +use dapi_grpc::tonic::Streaming; use dapi_grpc::tonic::{Code, Request, Response, Status}; +use dash_event_bus::event_bus::{EventBus, Filter as EventBusFilter}; +use dash_event_bus::{sender_sink, EventMux}; use dpp::version::PlatformVersion; use std::fmt::Debug; use std::sync::atomic::Ordering; -use std::sync::Arc; +use std::sync::{Arc, Mutex}; use std::thread::sleep; use std::time::Duration; +use tokio::sync::mpsc; +use tokio_stream::wrappers::ReceiverStream; use tracing::Instrument; +const PLATFORM_EVENTS_STREAM_BUFFER: usize = 128; + /// Service to handle platform queries pub struct QueryService { platform: Arc>, + _event_bus: EventBus, + /// Multiplexer for Platform events + platform_events_mux: EventMux, + /// background worker tasks + workers: Arc>>, } type QueryMethod = fn( @@ -72,8 +85,30 @@ type QueryMethod = fn( impl QueryService { /// Creates new QueryService - pub fn new(platform: Arc>) -> Self { - Self { platform } + pub fn new( + platform: Arc>, + event_bus: EventBus, + ) -> Self { + let mux = EventMux::new(); + let mut workers = tokio::task::JoinSet::new(); + + // Start local mux producer to bridge internal event_bus + { + let bus = event_bus.clone(); + let worker_mux = mux.clone(); + workers.spawn(async move { + use std::sync::Arc; + let mk = Arc::new(|f| PlatformFilterAdapter::new(f)); + dash_event_bus::run_local_platform_events_producer(worker_mux, bus, mk).await; + }); + } + + Self { + platform, + _event_bus: event_bus, + platform_events_mux: mux, + workers: Arc::new(Mutex::new(workers)), + } } async fn handle_blocking_query( @@ -252,6 +287,47 @@ fn respond_with_unimplemented(name: &str) -> Result, Status> { Err(Status::unimplemented("the endpoint is not supported")) } +/// Adapter implementing EventBus filter semantics based on incoming gRPC `PlatformFilterV0`. +#[derive(Clone, Debug)] +pub struct PlatformFilterAdapter { + inner: dapi_grpc::platform::v0::PlatformFilterV0, +} + +impl PlatformFilterAdapter { + /// Create a new adapter wrapping the provided gRPC `PlatformFilterV0`. + pub fn new(inner: dapi_grpc::platform::v0::PlatformFilterV0) -> Self { + Self { inner } + } +} + +impl EventBusFilter for PlatformFilterAdapter { + fn matches(&self, event: &PlatformEvent) -> bool { + use dapi_grpc::platform::v0::platform_event_v0::Event as Evt; + use dapi_grpc::platform::v0::platform_filter_v0::Kind; + match self.inner.kind.as_ref() { + None => false, + Some(Kind::All(all)) => *all, + Some(Kind::BlockCommitted(b)) => { + if !*b { + return false; + } + matches!(event.event, Some(Evt::BlockCommitted(_))) + } + Some(Kind::StateTransitionResult(filter)) => { + // If tx_hash is provided, match only that hash; otherwise match any STR + if let Some(Evt::StateTransitionFinalized(ref r)) = event.event { + match &filter.tx_hash { + Some(h) => r.tx_hash == *h, + None => true, + } + } else { + false + } + } + } + } +} + #[async_trait] impl PlatformService for QueryService { async fn broadcast_state_transition( @@ -802,8 +878,32 @@ impl PlatformService for QueryService { ) .await } -} + type subscribePlatformEventsStream = ReceiverStream>; + + /// Uses EventMux: forward inbound commands to mux subscriber and return its response stream + async fn subscribe_platform_events( + &self, + request: Request>, + ) -> Result, Status> { + // TODO: two issues are to be resolved: + // 1) restart of client with the same subscription id shows that old subscription is not removed + // 2) connection drops after some time + // return Err(Status::unimplemented("the endpoint is not supported yet")); + let inbound = request.into_inner(); + let (downstream_tx, rx) = + mpsc::channel::>(PLATFORM_EVENTS_STREAM_BUFFER); + let subscriber = self.platform_events_mux.add_subscriber().await; + + let mut workers = self.workers.lock().unwrap(); + workers.spawn(async move { + let resp_sink = sender_sink(downstream_tx); + subscriber.forward(inbound, resp_sink).await; + }); + + Ok(Response::new(ReceiverStream::new(rx))) + } +} #[async_trait] impl DriveInternal for QueryService { async fn get_proofs( diff --git a/packages/rs-drive-abci/src/server.rs b/packages/rs-drive-abci/src/server.rs index 3baf33f5c2a..32b0b76acf1 100644 --- a/packages/rs-drive-abci/src/server.rs +++ b/packages/rs-drive-abci/src/server.rs @@ -20,7 +20,13 @@ pub fn start( config: PlatformConfig, cancel: CancellationToken, ) { - let query_service = Arc::new(QueryService::new(Arc::clone(&platform))); + // Create a shared EventBus for platform events (filters adapted from gRPC filters) + let event_bus = dash_event_bus::event_bus::EventBus::< + dapi_grpc::platform::v0::PlatformEventV0, + crate::query::PlatformFilterAdapter, + >::new(); + + let query_service = Arc::new(QueryService::new(Arc::clone(&platform), event_bus.clone())); let drive_internal = Arc::clone(&query_service); @@ -70,7 +76,7 @@ pub fn start( // Start blocking ABCI socket-server that process consensus requests sequentially - let app = ConsensusAbciApplication::new(platform.as_ref()); + let app = ConsensusAbciApplication::new(platform.as_ref(), event_bus.clone()); let server = tenderdash_abci::ServerBuilder::new(app, &config.abci.consensus_bind_address) .with_cancel_token(cancel.clone()) diff --git a/packages/rs-drive-abci/tests/strategy_tests/main.rs b/packages/rs-drive-abci/tests/strategy_tests/main.rs index 16173c723fe..5967e60a7fd 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/main.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/main.rs @@ -198,6 +198,54 @@ mod tests { ); } + // Verify the in-process EventBus subscription delivers a published event + #[tokio::test(flavor = "multi_thread", worker_threads = 1)] + async fn event_bus_subscribe_all_and_receive() { + use dapi_grpc::platform::v0::platform_event_v0; + use dapi_grpc::platform::v0::platform_filter_v0::Kind as FilterKind; + use dapi_grpc::platform::v0::{PlatformEventV0, PlatformFilterV0}; + use drive_abci::abci::app::FullAbciApplication; + use drive_abci::query::PlatformFilterAdapter; + + let config = PlatformConfig::default(); + let mut platform = TestPlatformBuilder::new() + .with_config(config.clone()) + .build_with_mock_rpc(); + + // Create ABCI app and subscribe to all events + let abci_application = FullAbciApplication::new(&platform.platform); + let filter = PlatformFilterV0 { + kind: Some(FilterKind::All(true)), + }; + let handle = abci_application + .event_bus + .add_subscription(PlatformFilterAdapter::new(filter)) + .await; + + // Publish a simple BlockCommitted event + let meta = platform_event_v0::BlockMetadata { + height: 1, + time_ms: 123, + block_id_hash: vec![0u8; 32], + }; + let evt = PlatformEventV0 { + event: Some(platform_event_v0::Event::BlockCommitted( + platform_event_v0::BlockCommitted { + meta: Some(meta), + tx_count: 0, + }, + )), + }; + abci_application.event_bus.notify_sync(evt.clone()); + + // Await delivery + let received = tokio::time::timeout(std::time::Duration::from_secs(1), handle.recv()) + .await + .expect("timed out waiting for event"); + + assert_eq!(received, Some(evt)); + } + #[test] fn run_chain_stop_and_restart() { let strategy = NetworkStrategy { diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 23a5b5236f4..7d918fdb66a 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -13,10 +13,11 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ ] } dapi-grpc = { path = "../dapi-grpc", default-features = false } rs-dapi-client = { path = "../rs-dapi-client", default-features = false } +rs-dash-event-bus = { path = "../rs-dash-event-bus" } drive = { path = "../rs-drive", default-features = false, features = [ "verify", ] } -platform-wallet = { path = "../rs-platform-wallet", optional = true} +platform-wallet = { path = "../rs-platform-wallet", optional = true } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } dash-context-provider = { path = "../rs-context-provider", default-features = false } @@ -34,6 +35,7 @@ serde = { version = "1.0.219", default-features = false, features = [ serde_json = { version = "1.0", features = ["preserve_order"], optional = true } tracing = { version = "0.1.41" } hex = { version = "0.4.3" } +once_cell = "1.19" dotenvy = { version = "0.15.7", optional = true } envy = { version = "0.4.2", optional = true } futures = { version = "0.3.30" } @@ -42,6 +44,7 @@ lru = { version = "0.12.5", optional = true } bip37-bloom-filter = { git = "https://github.com/dashpay/rs-bip37-bloom-filter", branch = "develop" } zeroize = { version = "1.8", features = ["derive"] } + [target.'cfg(not(target_arch = "wasm32"))'.dependencies] tokio = { version = "1.40", features = ["macros", "time", "rt-multi-thread"] } @@ -51,8 +54,8 @@ js-sys = "0.3" [dev-dependencies] rs-dapi-client = { path = "../rs-dapi-client" } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } +tokio = { version = "1.40", features = ["macros", "rt-multi-thread", "signal"] } rs-sdk-trusted-context-provider = { path = "../rs-sdk-trusted-context-provider" } -tokio = { version = "1.40", features = ["macros", "rt-multi-thread"] } base64 = { version = "0.22.1" } tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } dpp = { path = "../rs-dpp", default-features = false, features = [ @@ -67,10 +70,21 @@ test-case = { version = "3.3.1" } assert_matches = "1.5.0" [features] -# TODO: remove mocks from default features -default = ["mocks", "offline-testing", "dapi-grpc/client", "token_reward_explanations"] -spv-client = ["core_spv", "core_key_wallet_manager", "core_key_wallet", "core_bincode", "core_key_wallet_bincode"] +# TODO: remove mocks from default features +default = [ + "mocks", + "offline-testing", + "dapi-grpc/client", + "token_reward_explanations", +] +spv-client = [ + "core_spv", + "core_key_wallet_manager", + "core_key_wallet", + "core_bincode", + "core_key_wallet_bincode", +] mocks = [ "dep:serde", "dep:serde_json", diff --git a/packages/rs-sdk/examples/platform_events.rs b/packages/rs-sdk/examples/platform_events.rs new file mode 100644 index 00000000000..dd43cd2b0ec --- /dev/null +++ b/packages/rs-sdk/examples/platform_events.rs @@ -0,0 +1,206 @@ +use dapi_grpc::platform::v0::platform_filter_v0::Kind as FilterKind; +use dapi_grpc::platform::v0::PlatformFilterV0; +use dapi_grpc::platform::v0::{ + platform_events_response::platform_events_response_v0::Response as Resp, PlatformEventsResponse, +}; +use dash_sdk::platform::fetch_current_no_parameters::FetchCurrent; +use dash_sdk::platform::types::epoch::Epoch; +use dash_sdk::{Sdk, SdkBuilder}; +use rs_dapi_client::{Address, AddressList}; +use dash_event_bus::SubscriptionHandle; +use serde::Deserialize; +use std::str::FromStr; +use zeroize::Zeroizing; + +#[derive(Debug, Deserialize)] +pub struct Config { + // Aligned with rs-sdk/tests/fetch/config.rs + #[serde(default)] + pub platform_host: String, + #[serde(default)] + pub platform_port: u16, + #[serde(default)] + pub platform_ssl: bool, + + #[serde(default)] + pub core_host: Option, + #[serde(default)] + pub core_port: u16, + #[serde(default)] + pub core_user: String, + #[serde(default)] + pub core_password: Zeroizing, + + #[serde(default)] + pub platform_ca_cert_path: Option, + + // Optional hex-encoded tx hash to filter STR events + #[serde(default)] + pub state_transition_tx_hash_hex: Option, +} + +impl Config { + const CONFIG_PREFIX: &'static str = "DASH_SDK_"; + fn load() -> Self { + let path: String = env!("CARGO_MANIFEST_DIR").to_owned() + "/tests/.env"; + let _ = dotenvy::from_path(&path); + envy::prefixed(Self::CONFIG_PREFIX) + .from_env() + .expect("configuration error: missing DASH_SDK_* vars; see rs-sdk/tests/.env") + } +} + +#[tokio::main(flavor = "multi_thread", worker_threads = 1)] +async fn main() { + tracing_subscriber::fmt::init(); + + let config = Config::load(); + let sdk = setup_sdk(&config); + // sanity check - fetch current epoch to see if connection works + let epoch = Epoch::fetch_current(&sdk).await.expect("fetch epoch"); + tracing::info!("Current epoch: {:?}", epoch); + + // Subscribe to BlockCommitted only + let filter_block = PlatformFilterV0 { + kind: Some(FilterKind::BlockCommitted(true)), + }; + let (block_id, block_handle) = sdk + .subscribe_platform_events(filter_block) + .await + .expect("subscribe block_committed"); + + // Subscribe to StateTransitionFinalized; optionally filter by tx hash if provided + let tx_hash_bytes = config + .state_transition_tx_hash_hex + .as_deref() + .and_then(|s| hex::decode(s).ok()); + let filter_str = PlatformFilterV0 { + kind: Some(FilterKind::StateTransitionResult( + dapi_grpc::platform::v0::StateTransitionResultFilter { + tx_hash: tx_hash_bytes, + }, + )), + }; + let (str_id, str_handle) = sdk + .subscribe_platform_events(filter_str) + .await + .expect("subscribe state_transition_result"); + + // Subscribe to All events as a separate stream (demonstration) + let filter_all = PlatformFilterV0 { + kind: Some(FilterKind::All(true)), + }; + let (all_id, all_handle) = sdk + .subscribe_platform_events(filter_all) + .await + .expect("subscribe all"); + + println!( + "Subscribed: BlockCommitted id={}, STR id={}, All id={}", + block_id, str_id, all_id + ); + println!("Waiting for events... (Ctrl+C to exit)"); + + let block_worker = tokio::spawn(worker(block_handle)); + let str_worker = tokio::spawn(worker(str_handle)); + let all_worker = tokio::spawn(worker(all_handle)); + + // Handle Ctrl+C to remove subscriptions and exit + let abort_block = block_worker.abort_handle(); + let abort_str = str_worker.abort_handle(); + let abort_all = all_worker.abort_handle(); + tokio::spawn(async move { + tokio::signal::ctrl_c().await.ok(); + println!("Ctrl+C received, stopping..."); + abort_block.abort(); + abort_str.abort(); + abort_all.abort(); + }); + + // Wait for workers to finish + let _ = tokio::join!(block_worker, str_worker, all_worker); +} + +async fn worker(handle: SubscriptionHandle) +where + F: Send + Sync + 'static, +{ + while let Some(resp) = handle.recv().await { + // Parse and print + if let Some(dapi_grpc::platform::v0::platform_events_response::Version::V0(v0)) = + resp.version + { + match v0.response { + Some(Resp::Event(ev)) => { + let sub_id = ev.client_subscription_id; + use dapi_grpc::platform::v0::platform_event_v0::Event as E; + if let Some(event_v0) = ev.event { + if let Some(event) = event_v0.event { + match event { + E::BlockCommitted(bc) => { + if let Some(meta) = bc.meta { + println!( + "{} BlockCommitted: height={} time_ms={} tx_count={} block_id_hash=0x{}", + sub_id, + meta.height, + meta.time_ms, + bc.tx_count, + hex::encode(meta.block_id_hash) + ); + } + } + E::StateTransitionFinalized(r) => { + if let Some(meta) = r.meta { + println!( + "{} StateTransitionFinalized: height={} tx_hash=0x{} block_id_hash=0x{}", + sub_id, + meta.height, + hex::encode(r.tx_hash), + hex::encode(meta.block_id_hash) + ); + } + } + } + } + } + } + Some(Resp::Ack(ack)) => { + println!("Ack: {} op={}", ack.client_subscription_id, ack.op); + } + Some(Resp::Error(err)) => { + eprintln!( + "Error: {} code={} msg={}", + err.client_subscription_id, err.code, err.message + ); + } + None => {} + } + } + } +} + +fn setup_sdk(config: &Config) -> Sdk { + let scheme = if config.platform_ssl { "https" } else { "http" }; + let host = &config.platform_host; + let address = Address::from_str(&format!("{}://{}:{}", scheme, host, config.platform_port)) + .expect("parse uri"); + tracing::debug!("Using DAPI address: {}", address.uri()); + let core_host = config.core_host.as_deref().unwrap_or(host); + + #[allow(unused_mut)] + let mut builder = SdkBuilder::new(AddressList::from_iter([address])).with_core( + core_host, + config.core_port, + &config.core_user, + &config.core_password, + ); + + #[cfg(not(target_arch = "wasm32"))] + if let Some(cert) = &config.platform_ca_cert_path { + builder = builder + .with_ca_certificate_file(cert) + .expect("load CA cert"); + } + + builder.build().expect("cannot build sdk") +} diff --git a/packages/rs-sdk/src/error.rs b/packages/rs-sdk/src/error.rs index cb1b79dd7e6..40d19532097 100644 --- a/packages/rs-sdk/src/error.rs +++ b/packages/rs-sdk/src/error.rs @@ -38,6 +38,9 @@ pub enum Error { /// DAPI client error, for example, connection error #[error("Dapi client error: {0}")] DapiClientError(rs_dapi_client::DapiClientError), + /// Subscription error + #[error("Subscription error: {0}")] + SubscriptionError(String), #[cfg(feature = "mocks")] /// DAPI mocks error #[error("Dapi mocks error: {0}")] diff --git a/packages/rs-sdk/src/platform.rs b/packages/rs-sdk/src/platform.rs index e5631646ea6..47721bfcebd 100644 --- a/packages/rs-sdk/src/platform.rs +++ b/packages/rs-sdk/src/platform.rs @@ -18,6 +18,7 @@ pub mod types; pub mod documents; pub mod dpns_usernames; +pub mod events; pub mod group_actions; pub mod tokens; diff --git a/packages/rs-sdk/src/platform/events.rs b/packages/rs-sdk/src/platform/events.rs new file mode 100644 index 00000000000..edd566ba2f0 --- /dev/null +++ b/packages/rs-sdk/src/platform/events.rs @@ -0,0 +1,82 @@ +use dapi_grpc::platform::v0::platform_client::PlatformClient; +use dapi_grpc::platform::v0::PlatformFilterV0; +use rs_dapi_client::transport::{create_channel, PlatformGrpcClient}; +use rs_dapi_client::{RequestSettings, Uri}; +use dash_event_bus::GrpcPlatformEventsProducer; +use dash_event_bus::{EventMux, PlatformEventsSubscriptionHandle}; +use std::time::Duration; +use tokio::time::timeout; + +impl crate::Sdk { + pub(crate) async fn get_event_mux(&self) -> Result { + use once_cell::sync::OnceCell; + static MUX: OnceCell = OnceCell::new(); + + if let Some(mux) = MUX.get() { + return Ok(mux.clone()); + } + + let mux = EventMux::new(); + + // Build a gRPC client to a live address + let address = self + .address_list() + .get_live_address() + .ok_or_else(|| crate::Error::SubscriptionError("no live DAPI address".to_string()))?; + let uri: Uri = address.uri().clone(); + + tracing::debug!(address = ?uri, "creating gRPC client for platform events"); + let settings = self + .dapi_client_settings + .override_by(RequestSettings { + connect_timeout: Some(Duration::from_secs(5)), + timeout: Some(Duration::from_secs(3600)), + ..Default::default() + }) + .finalize(); + let channel = create_channel(uri, Some(&settings)) + .map_err(|e| crate::Error::SubscriptionError(format!("channel: {e}")))?; + let client: PlatformGrpcClient = PlatformClient::new(channel); + + // Spawn the producer bridge + let worker_mux = mux.clone(); + tracing::debug!("spawning platform events producer task"); + let (ready_tx, ready_rx) = tokio::sync::oneshot::channel(); + self.spawn(async move { + let inner_mux = worker_mux.clone(); + tracing::debug!("starting platform events producer task GrpcPlatformEventsProducer"); + if let Err(e) = GrpcPlatformEventsProducer::run(inner_mux, client, ready_tx).await { + tracing::error!("platform events producer terminated: {}", e); + } + }) + .await; + // wait until the producer is ready, with a timeout + if timeout(Duration::from_secs(5), ready_rx).await.is_err() { + tracing::error!("timed out waiting for platform events producer to be ready"); + return Err(crate::Error::SubscriptionError( + "timeout waiting for platform events producer to be ready".to_string(), + )); + } + + let _ = MUX.set(mux.clone()); + + Ok(mux) + } + + /// Subscribe to Platform events and receive a raw EventBus handle. The + /// upstream subscription is removed automatically (RAII) when the last + /// clone of the handle is dropped. + pub async fn subscribe_platform_events( + &self, + filter: PlatformFilterV0, + ) -> Result<(String, PlatformEventsSubscriptionHandle), crate::Error> { + // Initialize global mux with a single upstream producer on first use + let mux = self.get_event_mux().await?; + + let (id, handle) = mux + .subscribe(filter) + .await + .map_err(|e| crate::Error::SubscriptionError(format!("subscribe: {}", e)))?; + Ok((id, handle)) + } +} diff --git a/packages/rs-sdk/src/sdk.rs b/packages/rs-sdk/src/sdk.rs index ed0e13374f8..6906cc7b0c5 100644 --- a/packages/rs-sdk/src/sdk.rs +++ b/packages/rs-sdk/src/sdk.rs @@ -44,7 +44,9 @@ use std::sync::{atomic, Arc}; #[cfg(not(target_arch = "wasm32"))] use std::time::{SystemTime, UNIX_EPOCH}; #[cfg(feature = "mocks")] -use tokio::sync::{Mutex, MutexGuard}; +use tokio::sync::MutexGuard; +use tokio::sync::Mutex; +use tokio::task::JoinSet; use tokio_util::sync::{CancellationToken, WaitForCancellationFuture}; use zeroize::Zeroizing; @@ -140,6 +142,9 @@ pub struct Sdk { #[cfg(feature = "mocks")] dump_dir: Option, + + /// Set of worker tasks spawned by the SDK + workers: Arc>>, } impl Clone for Sdk { fn clone(&self) -> Self { @@ -154,6 +159,7 @@ impl Clone for Sdk { metadata_height_tolerance: self.metadata_height_tolerance, metadata_time_tolerance_ms: self.metadata_time_tolerance_ms, dapi_client_settings: self.dapi_client_settings, + workers: Arc::clone(&self.workers), #[cfg(feature = "mocks")] dump_dir: self.dump_dir.clone(), } @@ -594,6 +600,25 @@ impl Sdk { SdkInstance::Mock { address_list, .. } => address_list, } } + + /// Spawn a new worker task that will be managed by the Sdk. + pub(crate) async fn spawn( + &self, + task: impl std::future::Future + Send + 'static, + ) -> tokio::sync::oneshot::Receiver<()> { + let (done_tx, done_rx) = tokio::sync::oneshot::channel(); + let mut workers = self + .workers + .try_lock() + .expect("workers lock is poisoned or in use"); + workers.spawn(async move { + task.await; + let _ = done_tx.send(()); + }); + tokio::task::yield_now().await; + + done_rx + } } /// If received metadata time differs from local time by more than `tolerance`, the remote node is considered stale. @@ -1076,6 +1101,7 @@ impl SdkBuilder { metadata_last_seen_height: Arc::new(atomic::AtomicU64::new(0)), metadata_height_tolerance: self.metadata_height_tolerance, metadata_time_tolerance_ms: self.metadata_time_tolerance_ms, + workers: Default::default(), #[cfg(feature = "mocks")] dump_dir: self.dump_dir, }; @@ -1144,6 +1170,7 @@ impl SdkBuilder { metadata_last_seen_height: Arc::new(atomic::AtomicU64::new(0)), metadata_height_tolerance: self.metadata_height_tolerance, metadata_time_tolerance_ms: self.metadata_time_tolerance_ms, + workers: Default::default(), }; let mut guard = mock_sdk.try_lock().expect("mock sdk is in use by another thread and cannot be reconfigured"); guard.set_sdk(sdk.clone()); @@ -1157,6 +1184,10 @@ impl SdkBuilder { None => return Err(Error::Config("Mock mode is not available. Please enable `mocks` feature or provide address list.".to_string())), }; + // let sdk_clone = sdk.clone(); + // start subscribing to events + // crate::sync::block_on(async move { sdk_clone.get_event_mux().await })??; + Ok(sdk) } } diff --git a/packages/rs-sdk/tests/fetch/mod.rs b/packages/rs-sdk/tests/fetch/mod.rs index bb16b2a04fa..1c1bada5800 100644 --- a/packages/rs-sdk/tests/fetch/mod.rs +++ b/packages/rs-sdk/tests/fetch/mod.rs @@ -24,6 +24,7 @@ mod identity; mod identity_contract_nonce; mod mock_fetch; mod mock_fetch_many; +mod platform_events; mod prefunded_specialized_balance; mod protocol_version_vote_count; mod protocol_version_votes; diff --git a/packages/rs-sdk/tests/fetch/platform_events.rs b/packages/rs-sdk/tests/fetch/platform_events.rs new file mode 100644 index 00000000000..8d4d253fdc2 --- /dev/null +++ b/packages/rs-sdk/tests/fetch/platform_events.rs @@ -0,0 +1,110 @@ +use super::{common::setup_logs, config::Config}; +use dapi_grpc::platform::v0::platform_client::PlatformClient; +use dapi_grpc::platform::v0::platform_events_command::platform_events_command_v0::Command as Cmd; +use dapi_grpc::platform::v0::platform_events_command::Version as CmdVersion; +use dapi_grpc::platform::v0::platform_events_response::platform_events_response_v0::Response as Resp; +use dapi_grpc::platform::v0::platform_events_response::Version as RespVersion; +use dapi_grpc::platform::v0::{AddSubscriptionV0, PingV0, PlatformEventsCommand, PlatformFilterV0}; +use dash_event_bus::{EventMux, GrpcPlatformEventsProducer}; +use rs_dapi_client::transport::create_channel; +use rs_dapi_client::{RequestSettings, Uri}; +use tokio::time::{timeout, Duration}; + +#[tokio::test(flavor = "multi_thread", worker_threads = 1)] +#[cfg(all(feature = "network-testing", not(feature = "offline-testing")))] +async fn test_platform_events_ping() { + setup_logs(); + + // Build gRPC client from test config + let cfg = Config::new(); + let address = cfg + .address_list() + .get_live_address() + .expect("at least one platform address configured") + .clone(); + let uri: Uri = address.uri().clone(); + let settings = RequestSettings { + timeout: Some(Duration::from_secs(30)), + ..Default::default() + } + .finalize(); + let channel = create_channel(uri, Some(&settings)).expect("create channel"); + let client = PlatformClient::new(channel); + + // Wire EventMux with a gRPC producer + let mux = EventMux::new(); + let (ready_tx, ready_rx) = tokio::sync::oneshot::channel(); + let mux_worker = mux.clone(); + tokio::spawn(async move { + let _ = GrpcPlatformEventsProducer::run(mux_worker, client, ready_tx).await; + }); + // Wait until producer is ready + timeout(Duration::from_secs(5), ready_rx) + .await + .expect("producer ready timeout") + .expect("producer start"); + + // Create a raw subscriber on the mux to send commands and receive responses + let sub = mux.add_subscriber().await; + let cmd_tx = sub.cmd_tx; + let mut resp_rx = sub.resp_rx; + + // Choose a numeric ID for our subscription and ping + let id_num: u64 = 4242; + let id_str = id_num.to_string(); + + // Send Add with our chosen client_subscription_id + let add_cmd = PlatformEventsCommand { + version: Some(CmdVersion::V0( + dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0 { + command: Some(Cmd::Add(AddSubscriptionV0 { + client_subscription_id: id_str.clone(), + filter: Some(PlatformFilterV0::default()), + })), + }, + )), + }; + cmd_tx.send(Ok(add_cmd)).expect("send add"); + + // Expect Add ack + let add_ack = timeout(Duration::from_secs(3), resp_rx.recv()) + .await + .expect("timeout waiting add ack") + .expect("subscriber closed") + .expect("ack error"); + match add_ack.version.and_then(|v| match v { + RespVersion::V0(v0) => v0.response, + }) { + Some(Resp::Ack(a)) => { + assert_eq!(a.client_subscription_id, id_str); + assert_eq!(a.op, "add"); + } + other => panic!("expected add ack, got: {:?}", other.map(|_| ())), + } + + // Send Ping with matching nonce so that ack routes to our subscription + let ping_cmd = PlatformEventsCommand { + version: Some(CmdVersion::V0( + dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0 { + command: Some(Cmd::Ping(PingV0 { nonce: id_num })), + }, + )), + }; + cmd_tx.send(Ok(ping_cmd)).expect("send ping"); + + // Expect Ping ack routed through Mux to our subscriber + let ping_ack = timeout(Duration::from_secs(3), resp_rx.recv()) + .await + .expect("timeout waiting ping ack") + .expect("subscriber closed") + .expect("ack error"); + match ping_ack.version.and_then(|v| match v { + RespVersion::V0(v0) => v0.response, + }) { + Some(Resp::Ack(a)) => { + assert_eq!(a.client_subscription_id, id_str); + assert_eq!(a.op, "ping"); + } + other => panic!("expected ping ack, got: {:?}", other.map(|_| ())), + } +} diff --git a/packages/wasm-sdk/src/error.rs b/packages/wasm-sdk/src/error.rs index a2b2e264462..b46a6220e3e 100644 --- a/packages/wasm-sdk/src/error.rs +++ b/packages/wasm-sdk/src/error.rs @@ -169,6 +169,12 @@ impl From for WasmSdkError { Cancelled(msg) => Self::new(WasmSdkErrorKind::Cancelled, msg, None, retriable), StaleNode(e) => Self::new(WasmSdkErrorKind::StaleNode, e.to_string(), None, retriable), StateTransitionBroadcastError(e) => WasmSdkError::from(e), + SubscriptionError(msg) => Self::new( + WasmSdkErrorKind::DapiClientError, + format!("Subscription error: {}", msg), + None, + retriable, + ), } } } From 187fd8045e7c58e2e4b71337f66d969918c49626 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Thu, 2 Oct 2025 13:00:24 +0200 Subject: [PATCH 02/40] fix: Dockerfile --- Dockerfile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Dockerfile b/Dockerfile index 5560419149b..e6e836e9944 100644 --- a/Dockerfile +++ b/Dockerfile @@ -373,6 +373,7 @@ COPY --parents \ packages/rs-platform-versioning \ packages/rs-platform-value-convertible \ packages/rs-drive-abci \ + packages/rs-dash-event-bus \ packages/dashpay-contract \ packages/withdrawals-contract \ packages/masternode-reward-shares-contract \ @@ -451,6 +452,7 @@ COPY --parents \ .cargo \ packages/dapi-grpc \ packages/rs-dapi-grpc-macros \ + packages/rs-dash-event-bus \ packages/rs-dpp \ packages/rs-drive \ packages/rs-platform-value \ @@ -553,6 +555,7 @@ COPY --parents \ Cargo.toml \ rust-toolchain.toml \ .cargo \ + packages/rs-dash-event-bus \ packages/rs-dpp \ packages/rs-platform-value \ packages/rs-platform-serialization \ From c3b1c1a2125f2ceff876981dc34e4705c6445ccd Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Thu, 2 Oct 2025 13:02:04 +0200 Subject: [PATCH 03/40] chore: cargo fmt --- packages/rs-drive-abci/src/abci/app/full.rs | 2 +- packages/rs-sdk/examples/platform_events.rs | 2 +- packages/rs-sdk/src/platform/events.rs | 4 ++-- packages/rs-sdk/src/sdk.rs | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/rs-drive-abci/src/abci/app/full.rs b/packages/rs-drive-abci/src/abci/app/full.rs index b7c8861d4f8..cd7a8424c6e 100644 --- a/packages/rs-drive-abci/src/abci/app/full.rs +++ b/packages/rs-drive-abci/src/abci/app/full.rs @@ -10,9 +10,9 @@ use crate::platform_types::platform::Platform; use crate::query::PlatformFilterAdapter; use crate::rpc::core::CoreRPCLike; use dapi_grpc::platform::v0::PlatformEventV0; +use dash_event_bus::event_bus::EventBus; use dpp::version::PlatformVersion; use drive::grovedb::Transaction; -use dash_event_bus::event_bus::EventBus; use std::fmt::Debug; use std::sync::RwLock; use tenderdash_abci::proto::abci as proto; diff --git a/packages/rs-sdk/examples/platform_events.rs b/packages/rs-sdk/examples/platform_events.rs index dd43cd2b0ec..96b60ca70f1 100644 --- a/packages/rs-sdk/examples/platform_events.rs +++ b/packages/rs-sdk/examples/platform_events.rs @@ -3,11 +3,11 @@ use dapi_grpc::platform::v0::PlatformFilterV0; use dapi_grpc::platform::v0::{ platform_events_response::platform_events_response_v0::Response as Resp, PlatformEventsResponse, }; +use dash_event_bus::SubscriptionHandle; use dash_sdk::platform::fetch_current_no_parameters::FetchCurrent; use dash_sdk::platform::types::epoch::Epoch; use dash_sdk::{Sdk, SdkBuilder}; use rs_dapi_client::{Address, AddressList}; -use dash_event_bus::SubscriptionHandle; use serde::Deserialize; use std::str::FromStr; use zeroize::Zeroizing; diff --git a/packages/rs-sdk/src/platform/events.rs b/packages/rs-sdk/src/platform/events.rs index edd566ba2f0..c748bfae747 100644 --- a/packages/rs-sdk/src/platform/events.rs +++ b/packages/rs-sdk/src/platform/events.rs @@ -1,9 +1,9 @@ use dapi_grpc::platform::v0::platform_client::PlatformClient; use dapi_grpc::platform::v0::PlatformFilterV0; -use rs_dapi_client::transport::{create_channel, PlatformGrpcClient}; -use rs_dapi_client::{RequestSettings, Uri}; use dash_event_bus::GrpcPlatformEventsProducer; use dash_event_bus::{EventMux, PlatformEventsSubscriptionHandle}; +use rs_dapi_client::transport::{create_channel, PlatformGrpcClient}; +use rs_dapi_client::{RequestSettings, Uri}; use std::time::Duration; use tokio::time::timeout; diff --git a/packages/rs-sdk/src/sdk.rs b/packages/rs-sdk/src/sdk.rs index 6906cc7b0c5..ea767571e49 100644 --- a/packages/rs-sdk/src/sdk.rs +++ b/packages/rs-sdk/src/sdk.rs @@ -43,9 +43,9 @@ use std::sync::atomic::Ordering; use std::sync::{atomic, Arc}; #[cfg(not(target_arch = "wasm32"))] use std::time::{SystemTime, UNIX_EPOCH}; +use tokio::sync::Mutex; #[cfg(feature = "mocks")] use tokio::sync::MutexGuard; -use tokio::sync::Mutex; use tokio::task::JoinSet; use tokio_util::sync::{CancellationToken, WaitForCancellationFuture}; use zeroize::Zeroizing; From e3e571511e07e04bc13fd2ec5774be49f69d5eb2 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Thu, 2 Oct 2025 13:35:00 +0200 Subject: [PATCH 04/40] feat: rs-sdk add subscriptions feature --- packages/rs-sdk/Cargo.toml | 10 +- packages/rs-sdk/examples/platform_events.rs | 362 ++++++++++---------- packages/rs-sdk/src/platform.rs | 1 + packages/rs-sdk/src/sdk.rs | 6 + packages/rs-sdk/tests/fetch/mod.rs | 1 + 5 files changed, 204 insertions(+), 176 deletions(-) diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 7d918fdb66a..a1e2ccc219d 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -13,7 +13,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ ] } dapi-grpc = { path = "../dapi-grpc", default-features = false } rs-dapi-client = { path = "../rs-dapi-client", default-features = false } -rs-dash-event-bus = { path = "../rs-dash-event-bus" } +rs-dash-event-bus = { path = "../rs-dash-event-bus", optional = true } drive = { path = "../rs-drive", default-features = false, features = [ "verify", ] } @@ -35,7 +35,7 @@ serde = { version = "1.0.219", default-features = false, features = [ serde_json = { version = "1.0", features = ["preserve_order"], optional = true } tracing = { version = "0.1.41" } hex = { version = "0.4.3" } -once_cell = "1.19" +once_cell = { version = "1.19", optional = true } dotenvy = { version = "0.15.7", optional = true } envy = { version = "0.4.2", optional = true } futures = { version = "0.3.30" } @@ -77,6 +77,7 @@ default = [ "offline-testing", "dapi-grpc/client", "token_reward_explanations", + "subscriptions", ] spv-client = [ "core_spv", @@ -101,6 +102,11 @@ mocks = [ "zeroize/serde", ] +subscriptions = [ + "dep:rs-dash-event-bus", + "dep:once_cell", +] + # Run integration tests using test vectors from `tests/vectors/` instead of connecting to live Dash Platform. # # This feature is enabled by default to allow testing without connecting to the Dash Platform as diff --git a/packages/rs-sdk/examples/platform_events.rs b/packages/rs-sdk/examples/platform_events.rs index 96b60ca70f1..5bd43ba0555 100644 --- a/packages/rs-sdk/examples/platform_events.rs +++ b/packages/rs-sdk/examples/platform_events.rs @@ -1,145 +1,158 @@ -use dapi_grpc::platform::v0::platform_filter_v0::Kind as FilterKind; -use dapi_grpc::platform::v0::PlatformFilterV0; -use dapi_grpc::platform::v0::{ - platform_events_response::platform_events_response_v0::Response as Resp, PlatformEventsResponse, -}; -use dash_event_bus::SubscriptionHandle; -use dash_sdk::platform::fetch_current_no_parameters::FetchCurrent; -use dash_sdk::platform::types::epoch::Epoch; -use dash_sdk::{Sdk, SdkBuilder}; -use rs_dapi_client::{Address, AddressList}; -use serde::Deserialize; -use std::str::FromStr; -use zeroize::Zeroizing; - -#[derive(Debug, Deserialize)] -pub struct Config { - // Aligned with rs-sdk/tests/fetch/config.rs - #[serde(default)] - pub platform_host: String, - #[serde(default)] - pub platform_port: u16, - #[serde(default)] - pub platform_ssl: bool, - - #[serde(default)] - pub core_host: Option, - #[serde(default)] - pub core_port: u16, - #[serde(default)] - pub core_user: String, - #[serde(default)] - pub core_password: Zeroizing, - - #[serde(default)] - pub platform_ca_cert_path: Option, - - // Optional hex-encoded tx hash to filter STR events - #[serde(default)] - pub state_transition_tx_hash_hex: Option, -} - -impl Config { - const CONFIG_PREFIX: &'static str = "DASH_SDK_"; - fn load() -> Self { - let path: String = env!("CARGO_MANIFEST_DIR").to_owned() + "/tests/.env"; - let _ = dotenvy::from_path(&path); - envy::prefixed(Self::CONFIG_PREFIX) - .from_env() - .expect("configuration error: missing DASH_SDK_* vars; see rs-sdk/tests/.env") +fn main() { + #[cfg(feature = "subscriptions")] + subscribe::main(); + #[cfg(not(feature = "subscriptions"))] + { + println!("Enable the 'subscriptions' feature to run this example."); } } -#[tokio::main(flavor = "multi_thread", worker_threads = 1)] -async fn main() { - tracing_subscriber::fmt::init(); - - let config = Config::load(); - let sdk = setup_sdk(&config); - // sanity check - fetch current epoch to see if connection works - let epoch = Epoch::fetch_current(&sdk).await.expect("fetch epoch"); - tracing::info!("Current epoch: {:?}", epoch); +#[cfg(feature = "subscriptions")] +mod subscribe { - // Subscribe to BlockCommitted only - let filter_block = PlatformFilterV0 { - kind: Some(FilterKind::BlockCommitted(true)), + use dapi_grpc::platform::v0::platform_filter_v0::Kind as FilterKind; + use dapi_grpc::platform::v0::PlatformFilterV0; + use dapi_grpc::platform::v0::{ + platform_events_response::platform_events_response_v0::Response as Resp, + PlatformEventsResponse, }; - let (block_id, block_handle) = sdk - .subscribe_platform_events(filter_block) - .await - .expect("subscribe block_committed"); - - // Subscribe to StateTransitionFinalized; optionally filter by tx hash if provided - let tx_hash_bytes = config - .state_transition_tx_hash_hex - .as_deref() - .and_then(|s| hex::decode(s).ok()); - let filter_str = PlatformFilterV0 { - kind: Some(FilterKind::StateTransitionResult( - dapi_grpc::platform::v0::StateTransitionResultFilter { - tx_hash: tx_hash_bytes, - }, - )), - }; - let (str_id, str_handle) = sdk - .subscribe_platform_events(filter_str) - .await - .expect("subscribe state_transition_result"); - - // Subscribe to All events as a separate stream (demonstration) - let filter_all = PlatformFilterV0 { - kind: Some(FilterKind::All(true)), - }; - let (all_id, all_handle) = sdk - .subscribe_platform_events(filter_all) - .await - .expect("subscribe all"); - - println!( - "Subscribed: BlockCommitted id={}, STR id={}, All id={}", - block_id, str_id, all_id - ); - println!("Waiting for events... (Ctrl+C to exit)"); - - let block_worker = tokio::spawn(worker(block_handle)); - let str_worker = tokio::spawn(worker(str_handle)); - let all_worker = tokio::spawn(worker(all_handle)); - - // Handle Ctrl+C to remove subscriptions and exit - let abort_block = block_worker.abort_handle(); - let abort_str = str_worker.abort_handle(); - let abort_all = all_worker.abort_handle(); - tokio::spawn(async move { - tokio::signal::ctrl_c().await.ok(); - println!("Ctrl+C received, stopping..."); - abort_block.abort(); - abort_str.abort(); - abort_all.abort(); - }); - - // Wait for workers to finish - let _ = tokio::join!(block_worker, str_worker, all_worker); -} + use dash_event_bus::SubscriptionHandle; + use dash_sdk::platform::fetch_current_no_parameters::FetchCurrent; + use dash_sdk::platform::types::epoch::Epoch; + use dash_sdk::{Sdk, SdkBuilder}; + use rs_dapi_client::{Address, AddressList}; + use serde::Deserialize; + use std::str::FromStr; + use zeroize::Zeroizing; + + #[derive(Debug, Deserialize)] + pub struct Config { + // Aligned with rs-sdk/tests/fetch/config.rs + #[serde(default)] + pub platform_host: String, + #[serde(default)] + pub platform_port: u16, + #[serde(default)] + pub platform_ssl: bool, + + #[serde(default)] + pub core_host: Option, + #[serde(default)] + pub core_port: u16, + #[serde(default)] + pub core_user: String, + #[serde(default)] + pub core_password: Zeroizing, + + #[serde(default)] + pub platform_ca_cert_path: Option, + + // Optional hex-encoded tx hash to filter STR events + #[serde(default)] + pub state_transition_tx_hash_hex: Option, + } -async fn worker(handle: SubscriptionHandle) -where - F: Send + Sync + 'static, -{ - while let Some(resp) = handle.recv().await { - // Parse and print - if let Some(dapi_grpc::platform::v0::platform_events_response::Version::V0(v0)) = - resp.version - { - match v0.response { - Some(Resp::Event(ev)) => { - let sub_id = ev.client_subscription_id; - use dapi_grpc::platform::v0::platform_event_v0::Event as E; - if let Some(event_v0) = ev.event { - if let Some(event) = event_v0.event { - match event { - E::BlockCommitted(bc) => { - if let Some(meta) = bc.meta { - println!( + impl Config { + const CONFIG_PREFIX: &'static str = "DASH_SDK_"; + fn load() -> Self { + let path: String = env!("CARGO_MANIFEST_DIR").to_owned() + "/tests/.env"; + let _ = dotenvy::from_path(&path); + envy::prefixed(Self::CONFIG_PREFIX) + .from_env() + .expect("configuration error: missing DASH_SDK_* vars; see rs-sdk/tests/.env") + } + } + + #[tokio::main(flavor = "multi_thread", worker_threads = 2)] + pub(super) async fn main() { + tracing_subscriber::fmt::init(); + + let config = Config::load(); + let sdk = setup_sdk(&config); + // sanity check - fetch current epoch to see if connection works + let epoch = Epoch::fetch_current(&sdk).await.expect("fetch epoch"); + tracing::info!("Current epoch: {:?}", epoch); + + // Subscribe to BlockCommitted only + let filter_block = PlatformFilterV0 { + kind: Some(FilterKind::BlockCommitted(true)), + }; + let (block_id, block_handle) = sdk + .subscribe_platform_events(filter_block) + .await + .expect("subscribe block_committed"); + + // Subscribe to StateTransitionFinalized; optionally filter by tx hash if provided + let tx_hash_bytes = config + .state_transition_tx_hash_hex + .as_deref() + .and_then(|s| hex::decode(s).ok()); + let filter_str = PlatformFilterV0 { + kind: Some(FilterKind::StateTransitionResult( + dapi_grpc::platform::v0::StateTransitionResultFilter { + tx_hash: tx_hash_bytes, + }, + )), + }; + let (str_id, str_handle) = sdk + .subscribe_platform_events(filter_str) + .await + .expect("subscribe state_transition_result"); + + // Subscribe to All events as a separate stream (demonstration) + let filter_all = PlatformFilterV0 { + kind: Some(FilterKind::All(true)), + }; + let (all_id, all_handle) = sdk + .subscribe_platform_events(filter_all) + .await + .expect("subscribe all"); + + println!( + "Subscribed: BlockCommitted id={}, STR id={}, All id={}", + block_id, str_id, all_id + ); + println!("Waiting for events... (Ctrl+C to exit)"); + + let block_worker = tokio::spawn(worker(block_handle)); + let str_worker = tokio::spawn(worker(str_handle)); + let all_worker = tokio::spawn(worker(all_handle)); + + // Handle Ctrl+C to remove subscriptions and exit + let abort_block = block_worker.abort_handle(); + let abort_str = str_worker.abort_handle(); + let abort_all = all_worker.abort_handle(); + tokio::spawn(async move { + tokio::signal::ctrl_c().await.ok(); + println!("Ctrl+C received, stopping..."); + abort_block.abort(); + abort_str.abort(); + abort_all.abort(); + }); + + // Wait for workers to finish + let _ = tokio::join!(block_worker, str_worker, all_worker); + } + + async fn worker(handle: SubscriptionHandle) + where + F: Send + Sync + 'static, + { + while let Some(resp) = handle.recv().await { + // Parse and print + if let Some(dapi_grpc::platform::v0::platform_events_response::Version::V0(v0)) = + resp.version + { + match v0.response { + Some(Resp::Event(ev)) => { + let sub_id = ev.client_subscription_id; + use dapi_grpc::platform::v0::platform_event_v0::Event as E; + if let Some(event_v0) = ev.event { + if let Some(event) = event_v0.event { + match event { + E::BlockCommitted(bc) => { + if let Some(meta) = bc.meta { + println!( "{} BlockCommitted: height={} time_ms={} tx_count={} block_id_hash=0x{}", sub_id, meta.height, @@ -147,60 +160,61 @@ where bc.tx_count, hex::encode(meta.block_id_hash) ); + } } - } - E::StateTransitionFinalized(r) => { - if let Some(meta) = r.meta { - println!( + E::StateTransitionFinalized(r) => { + if let Some(meta) = r.meta { + println!( "{} StateTransitionFinalized: height={} tx_hash=0x{} block_id_hash=0x{}", sub_id, meta.height, hex::encode(r.tx_hash), hex::encode(meta.block_id_hash) ); + } } } } } } + Some(Resp::Ack(ack)) => { + println!("Ack: {} op={}", ack.client_subscription_id, ack.op); + } + Some(Resp::Error(err)) => { + eprintln!( + "Error: {} code={} msg={}", + err.client_subscription_id, err.code, err.message + ); + } + None => {} } - Some(Resp::Ack(ack)) => { - println!("Ack: {} op={}", ack.client_subscription_id, ack.op); - } - Some(Resp::Error(err)) => { - eprintln!( - "Error: {} code={} msg={}", - err.client_subscription_id, err.code, err.message - ); - } - None => {} } } } -} -fn setup_sdk(config: &Config) -> Sdk { - let scheme = if config.platform_ssl { "https" } else { "http" }; - let host = &config.platform_host; - let address = Address::from_str(&format!("{}://{}:{}", scheme, host, config.platform_port)) - .expect("parse uri"); - tracing::debug!("Using DAPI address: {}", address.uri()); - let core_host = config.core_host.as_deref().unwrap_or(host); - - #[allow(unused_mut)] - let mut builder = SdkBuilder::new(AddressList::from_iter([address])).with_core( - core_host, - config.core_port, - &config.core_user, - &config.core_password, - ); - - #[cfg(not(target_arch = "wasm32"))] - if let Some(cert) = &config.platform_ca_cert_path { - builder = builder - .with_ca_certificate_file(cert) - .expect("load CA cert"); - } + fn setup_sdk(config: &Config) -> Sdk { + let scheme = if config.platform_ssl { "https" } else { "http" }; + let host = &config.platform_host; + let address = Address::from_str(&format!("{}://{}:{}", scheme, host, config.platform_port)) + .expect("parse uri"); + tracing::debug!("Using DAPI address: {}", address.uri()); + let core_host = config.core_host.as_deref().unwrap_or(host); + + #[allow(unused_mut)] + let mut builder = SdkBuilder::new(AddressList::from_iter([address])).with_core( + core_host, + config.core_port, + &config.core_user, + &config.core_password, + ); + + #[cfg(not(target_arch = "wasm32"))] + if let Some(cert) = &config.platform_ca_cert_path { + builder = builder + .with_ca_certificate_file(cert) + .expect("load CA cert"); + } - builder.build().expect("cannot build sdk") + builder.build().expect("cannot build sdk") + } } diff --git a/packages/rs-sdk/src/platform.rs b/packages/rs-sdk/src/platform.rs index 47721bfcebd..b05daa2bc91 100644 --- a/packages/rs-sdk/src/platform.rs +++ b/packages/rs-sdk/src/platform.rs @@ -18,6 +18,7 @@ pub mod types; pub mod documents; pub mod dpns_usernames; +#[cfg(feature = "subscriptions")] pub mod events; pub mod group_actions; pub mod tokens; diff --git a/packages/rs-sdk/src/sdk.rs b/packages/rs-sdk/src/sdk.rs index ea767571e49..fc80c390613 100644 --- a/packages/rs-sdk/src/sdk.rs +++ b/packages/rs-sdk/src/sdk.rs @@ -46,6 +46,7 @@ use std::time::{SystemTime, UNIX_EPOCH}; use tokio::sync::Mutex; #[cfg(feature = "mocks")] use tokio::sync::MutexGuard; +#[cfg(feature = "subscriptions")] use tokio::task::JoinSet; use tokio_util::sync::{CancellationToken, WaitForCancellationFuture}; use zeroize::Zeroizing; @@ -143,6 +144,7 @@ pub struct Sdk { #[cfg(feature = "mocks")] dump_dir: Option, + #[cfg(feature = "subscriptions")] /// Set of worker tasks spawned by the SDK workers: Arc>>, } @@ -159,6 +161,7 @@ impl Clone for Sdk { metadata_height_tolerance: self.metadata_height_tolerance, metadata_time_tolerance_ms: self.metadata_time_tolerance_ms, dapi_client_settings: self.dapi_client_settings, + #[cfg(feature = "subscriptions")] workers: Arc::clone(&self.workers), #[cfg(feature = "mocks")] dump_dir: self.dump_dir.clone(), @@ -602,6 +605,7 @@ impl Sdk { } /// Spawn a new worker task that will be managed by the Sdk. + #[cfg(feature = "subscriptions")] pub(crate) async fn spawn( &self, task: impl std::future::Future + Send + 'static, @@ -1101,6 +1105,7 @@ impl SdkBuilder { metadata_last_seen_height: Arc::new(atomic::AtomicU64::new(0)), metadata_height_tolerance: self.metadata_height_tolerance, metadata_time_tolerance_ms: self.metadata_time_tolerance_ms, + #[cfg(feature = "subscriptions")] workers: Default::default(), #[cfg(feature = "mocks")] dump_dir: self.dump_dir, @@ -1170,6 +1175,7 @@ impl SdkBuilder { metadata_last_seen_height: Arc::new(atomic::AtomicU64::new(0)), metadata_height_tolerance: self.metadata_height_tolerance, metadata_time_tolerance_ms: self.metadata_time_tolerance_ms, + #[cfg(feature = "subscriptions")] workers: Default::default(), }; let mut guard = mock_sdk.try_lock().expect("mock sdk is in use by another thread and cannot be reconfigured"); diff --git a/packages/rs-sdk/tests/fetch/mod.rs b/packages/rs-sdk/tests/fetch/mod.rs index 1c1bada5800..6ddfe751f71 100644 --- a/packages/rs-sdk/tests/fetch/mod.rs +++ b/packages/rs-sdk/tests/fetch/mod.rs @@ -24,6 +24,7 @@ mod identity; mod identity_contract_nonce; mod mock_fetch; mod mock_fetch_many; +#[cfg(feature = "subscriptions")] mod platform_events; mod prefunded_specialized_balance; mod protocol_version_vote_count; From aa44c3212e3faa8a05c0739f696af4a3b5322bf8 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Thu, 2 Oct 2025 13:40:29 +0200 Subject: [PATCH 05/40] rs-dash-event-bus edition 2024 --- packages/rs-dash-event-bus/Cargo.toml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/rs-dash-event-bus/Cargo.toml b/packages/rs-dash-event-bus/Cargo.toml index 853d24d2c38..80be440858b 100644 --- a/packages/rs-dash-event-bus/Cargo.toml +++ b/packages/rs-dash-event-bus/Cargo.toml @@ -1,8 +1,8 @@ [package] name = "rs-dash-event-bus" -version = "2.1.0-dev.3" -edition = "2021" -license = "MIT OR Apache-2.0" +version = "2.1.0-dev.7" +edition = "2024" +license = "MIT" description = "Shared event bus and Platform events multiplexer for Dash Platform (rs-dapi, rs-drive-abci, rs-sdk)" [lib] From 2c68c4cc7aee52ec9ee7156a77d18ad3f8ce0257 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Thu, 2 Oct 2025 13:40:45 +0200 Subject: [PATCH 06/40] chore: cargo.lock --- Cargo.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 6fb3848b92c..fed324ef6f3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5073,7 +5073,7 @@ dependencies = [ [[package]] name = "rs-dash-event-bus" -version = "2.1.0-dev.3" +version = "2.1.0-dev.7" dependencies = [ "dapi-grpc", "futures", From 953664c64babeb1b67ed5d75988e8bba6bb955a2 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Wed, 8 Oct 2025 16:08:57 +0200 Subject: [PATCH 07/40] dash-event-bus fixes --- .../rs-dash-event-bus/src/local_bus_producer.rs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/rs-dash-event-bus/src/local_bus_producer.rs b/packages/rs-dash-event-bus/src/local_bus_producer.rs index 51b63938090..6adc3c3d2a4 100644 --- a/packages/rs-dash-event-bus/src/local_bus_producer.rs +++ b/packages/rs-dash-event-bus/src/local_bus_producer.rs @@ -14,6 +14,7 @@ use dapi_grpc::platform::v0::{ use std::collections::HashMap; use std::fmt::Debug; use std::sync::Arc; +use tokio::task::JoinHandle; /// Runs a local producer that bridges EventMux commands to a local EventBus of Platform events. /// @@ -31,7 +32,8 @@ pub async fn run_local_platform_events_producer( let mut cmd_rx = producer.cmd_rx; let resp_tx = producer.resp_tx; - let mut subs: HashMap> = HashMap::new(); + let mut subs: HashMap, JoinHandle<_>)> = + HashMap::new(); while let Some(cmd_res) = cmd_rx.recv().await { match cmd_res { @@ -66,11 +68,11 @@ pub async fn run_local_platform_events_producer( let id_for = id.clone(); let handle_clone = handle.clone(); let resp_tx_clone = resp_tx.clone(); - tokio::spawn(async move { + let worker = tokio::spawn(async move { forward_local_events(handle_clone, &id_for, resp_tx_clone).await; }); - subs.insert(id.clone(), handle); + subs.insert(id.clone(), (handle, worker)); // Ack let ack = PlatformEventsResponse { @@ -87,7 +89,7 @@ pub async fn run_local_platform_events_producer( } Some(Cmd::Remove(rem)) => { let id = rem.client_subscription_id; - if subs.remove(&id).is_some() { + if let Some((subscription, worker)) = subs.remove(&id) { let ack = PlatformEventsResponse { version: Some(RespVersion::V0(PlatformEventsResponseV0 { response: Some(Resp::Ack(dapi_grpc::platform::v0::AckV0 { @@ -99,6 +101,10 @@ pub async fn run_local_platform_events_producer( if resp_tx.send(Ok(ack)).await.is_err() { tracing::warn!("local producer failed to send remove ack"); } + + // TODO: add subscription close method + drop(subscription); + worker.abort(); } } Some(Cmd::Ping(p)) => { From 15664fb0e45b2e6fa75f0f4f244d7c3369478796 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Wed, 8 Oct 2025 16:12:59 +0200 Subject: [PATCH 08/40] fmt --- packages/rs-dash-event-bus/src/event_bus.rs | 6 ++--- packages/rs-dash-event-bus/src/event_mux.rs | 26 +++++++++++-------- .../rs-dash-event-bus/src/grpc_producer.rs | 4 +-- packages/rs-dash-event-bus/src/lib.rs | 4 +-- .../src/local_bus_producer.rs | 2 +- 5 files changed, 23 insertions(+), 19 deletions(-) diff --git a/packages/rs-dash-event-bus/src/event_bus.rs b/packages/rs-dash-event-bus/src/event_bus.rs index b95bb77d8c6..45f04ded3b8 100644 --- a/packages/rs-dash-event-bus/src/event_bus.rs +++ b/packages/rs-dash-event-bus/src/event_bus.rs @@ -2,11 +2,11 @@ use std::collections::BTreeMap; use std::fmt::Debug; -use std::sync::atomic::{AtomicU64, Ordering}; use std::sync::Arc; +use std::sync::atomic::{AtomicU64, Ordering}; use tokio::sync::mpsc::error::TrySendError; -use tokio::sync::{mpsc, Mutex, RwLock}; +use tokio::sync::{Mutex, RwLock, mpsc}; const DEFAULT_SUBSCRIPTION_CAPACITY: usize = 256; @@ -414,7 +414,7 @@ fn metrics_events_dropped_inc() {} #[cfg(test)] mod tests { use super::*; - use tokio::time::{timeout, Duration}; + use tokio::time::{Duration, timeout}; #[derive(Clone, Debug, PartialEq)] enum Evt { diff --git a/packages/rs-dash-event-bus/src/event_mux.rs b/packages/rs-dash-event-bus/src/event_mux.rs index 357ea0bf9a7..808061c8bc5 100644 --- a/packages/rs-dash-event-bus/src/event_mux.rs +++ b/packages/rs-dash-event-bus/src/event_mux.rs @@ -9,17 +9,17 @@ //! - Fan-out responses to all subscribers whose filters match use std::collections::{BTreeMap, BTreeSet}; -use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::Arc; +use std::sync::atomic::{AtomicUsize, Ordering}; -use dapi_grpc::platform::v0::platform_events_command::platform_events_command_v0::Command as Cmd; +use dapi_grpc::platform::v0::PlatformEventsCommand; use dapi_grpc::platform::v0::platform_events_command::Version as CmdVersion; +use dapi_grpc::platform::v0::platform_events_command::platform_events_command_v0::Command as Cmd; use dapi_grpc::platform::v0::platform_events_response::platform_events_response_v0::Response as Resp; -use dapi_grpc::platform::v0::PlatformEventsCommand; use dapi_grpc::tonic::Status; use futures::SinkExt; use tokio::join; -use tokio::sync::{mpsc, Mutex}; +use tokio::sync::{Mutex, mpsc}; use tokio_util::sync::PollSender; use crate::event_bus::{EventBus, Filter as EventFilter, SubscriptionHandle}; @@ -721,7 +721,7 @@ mod tests { use dapi_grpc::platform::v0::platform_events_response::PlatformEventsResponseV0; use dapi_grpc::platform::v0::{PlatformEventMessageV0, PlatformEventV0, PlatformFilterV0}; use std::collections::HashMap; - use tokio::time::{timeout, Duration}; + use tokio::time::{Duration, timeout}; fn make_add_cmd(id: &str) -> PlatformEventsCommand { PlatformEventsCommand { @@ -842,12 +842,16 @@ mod tests { assert_eq!(extract_id(ev2), sub_id); // Ensure no duplicate deliveries per subscriber - assert!(timeout(Duration::from_millis(100), resp_rx1.recv()) - .await - .is_err()); - assert!(timeout(Duration::from_millis(100), resp_rx2.recv()) - .await - .is_err()); + assert!( + timeout(Duration::from_millis(100), resp_rx1.recv()) + .await + .is_err() + ); + assert!( + timeout(Duration::from_millis(100), resp_rx2.recv()) + .await + .is_err() + ); // Drop subscribers to trigger Remove for both drop(sub1_cmd_tx); diff --git a/packages/rs-dash-event-bus/src/grpc_producer.rs b/packages/rs-dash-event-bus/src/grpc_producer.rs index 88257c96a9f..43259b38327 100644 --- a/packages/rs-dash-event-bus/src/grpc_producer.rs +++ b/packages/rs-dash-event-bus/src/grpc_producer.rs @@ -1,11 +1,11 @@ -use dapi_grpc::platform::v0::platform_client::PlatformClient; use dapi_grpc::platform::v0::PlatformEventsCommand; +use dapi_grpc::platform::v0::platform_client::PlatformClient; use dapi_grpc::tonic::Status; use tokio::sync::mpsc; use tokio::sync::oneshot; use tokio_stream::wrappers::ReceiverStream; -use crate::event_mux::{result_sender_sink, EventMux}; +use crate::event_mux::{EventMux, result_sender_sink}; const UPSTREAM_COMMAND_BUFFER: usize = 128; diff --git a/packages/rs-dash-event-bus/src/lib.rs b/packages/rs-dash-event-bus/src/lib.rs index 7a6bf468fe2..372205a4781 100644 --- a/packages/rs-dash-event-bus/src/lib.rs +++ b/packages/rs-dash-event-bus/src/lib.rs @@ -10,8 +10,8 @@ pub mod local_bus_producer; pub use event_bus::{EventBus, Filter, SubscriptionHandle}; pub use event_mux::{ - result_sender_sink, sender_sink, EventMux, EventProducer, EventSubscriber, - PlatformEventsSubscriptionHandle, + EventMux, EventProducer, EventSubscriber, PlatformEventsSubscriptionHandle, result_sender_sink, + sender_sink, }; pub use grpc_producer::GrpcPlatformEventsProducer; pub use local_bus_producer::run_local_platform_events_producer; diff --git a/packages/rs-dash-event-bus/src/local_bus_producer.rs b/packages/rs-dash-event-bus/src/local_bus_producer.rs index 6adc3c3d2a4..3ea358942ab 100644 --- a/packages/rs-dash-event-bus/src/local_bus_producer.rs +++ b/packages/rs-dash-event-bus/src/local_bus_producer.rs @@ -1,7 +1,7 @@ use crate::event_bus::{EventBus, SubscriptionHandle}; use crate::event_mux::EventMux; -use dapi_grpc::platform::v0::platform_events_command::platform_events_command_v0::Command as Cmd; use dapi_grpc::platform::v0::platform_events_command::Version as CmdVersion; +use dapi_grpc::platform::v0::platform_events_command::platform_events_command_v0::Command as Cmd; use dapi_grpc::platform::v0::platform_events_response::platform_events_response_v0::Response as Resp; // already imported below use dapi_grpc::platform::v0::platform_events_response::{ From bcc8a072bf5161454164749f5e6bb9cc64bc5fa5 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Wed, 8 Oct 2025 16:15:17 +0200 Subject: [PATCH 09/40] cargo clippy + cargo machete --- Cargo.lock | 12 -------- packages/rs-dash-event-bus/Cargo.toml | 2 -- packages/rs-dash-event-bus/src/event_bus.rs | 5 ++-- packages/rs-dash-event-bus/src/event_mux.rs | 31 ++++++++------------- 4 files changed, 14 insertions(+), 36 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index fed324ef6f3..b8fc7360647 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -5078,8 +5078,6 @@ dependencies = [ "dapi-grpc", "futures", "metrics", - "rs-dapi-client", - "sender-sink", "tokio", "tokio-stream", "tokio-util", @@ -5471,16 +5469,6 @@ version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" -[[package]] -name = "sender-sink" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa84fb38012aeecea16454e88aea3f2d36cf358a702e3116448213b2e13f2181" -dependencies = [ - "futures", - "tokio", -] - [[package]] name = "serde" version = "1.0.225" diff --git a/packages/rs-dash-event-bus/Cargo.toml b/packages/rs-dash-event-bus/Cargo.toml index 80be440858b..52c070ad552 100644 --- a/packages/rs-dash-event-bus/Cargo.toml +++ b/packages/rs-dash-event-bus/Cargo.toml @@ -19,11 +19,9 @@ tokio-stream = { version = "0.1", features = ["sync"] } tokio-util = { version = "0.7", features = ["rt"] } tracing = "0.1" futures = "0.3" -sender-sink = { version = "0.2.1" } # Internal workspace crates dapi-grpc = { path = "../dapi-grpc" } -rs-dapi-client = { path = "../rs-dapi-client" } # Optional metrics metrics = { version = "0.24.2", optional = true } diff --git a/packages/rs-dash-event-bus/src/event_bus.rs b/packages/rs-dash-event-bus/src/event_bus.rs index 45f04ded3b8..dbb7398cd19 100644 --- a/packages/rs-dash-event-bus/src/event_bus.rs +++ b/packages/rs-dash-event-bus/src/event_bus.rs @@ -272,12 +272,11 @@ where }); } else { // Fallback: best-effort synchronous removal using try_write() - if let Ok(mut subs) = bus.subs.try_write() { - if subs.remove(&id).is_some() { + if let Ok(mut subs) = bus.subs.try_write() + && subs.remove(&id).is_some() { metrics_unsubscribe_inc(); metrics_active_gauge_set(subs.len()); } - } } } } diff --git a/packages/rs-dash-event-bus/src/event_mux.rs b/packages/rs-dash-event-bus/src/event_mux.rs index 808061c8bc5..b891eb9824c 100644 --- a/packages/rs-dash-event-bus/src/event_mux.rs +++ b/packages/rs-dash-event-bus/src/event_mux.rs @@ -182,8 +182,8 @@ impl EventMux { .map(|info| { (info.subscriber_id, info.handle.id(), info.assigned_producer) }) - } { - if prev_sub_id == subscriber_id { + } + && prev_sub_id == subscriber_id { tracing::warn!( subscriber_id, subscription_id = %id, @@ -192,8 +192,8 @@ impl EventMux { // Remove previous bus subscription self.bus.remove_subscription(prev_handle_id).await; // Notify previously assigned producer about removal - if let Some(prev_idx) = prev_assigned { - if let Some(tx) = self.get_producer_tx(prev_idx).await { + if let Some(prev_idx) = prev_assigned + && let Some(tx) = self.get_producer_tx(prev_idx).await { let remove_cmd = PlatformEventsCommand { version: Some(CmdVersion::V0( dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0 { @@ -212,7 +212,6 @@ impl EventMux { ); } } - } // Drop previous mapping entry (it will be replaced below) let _ = { self.subscriptions.lock().unwrap().remove(&SubscriptionKey { @@ -221,7 +220,6 @@ impl EventMux { }) }; } - } // Create subscription filtered by client_subscription_id and forward events let handle = self @@ -302,14 +300,12 @@ impl EventMux { None }; - if let Some(idx) = assigned { - if let Some(tx) = self.get_producer_tx(idx).await { - if tx.send(Ok(cmd)).await.is_err() { + if let Some(idx) = assigned + && let Some(tx) = self.get_producer_tx(idx).await + && tx.send(Ok(cmd)).await.is_err() { tracing::debug!(subscription_id = %id, "event_mux: failed to send Remove to producer - channel closed"); self.handle_subscriber_disconnect(subscriber_id).await; } - } - } } _ => {} } @@ -358,8 +354,8 @@ impl EventMux { }; // Send remove command to assigned producer - if let Some(idx) = assigned { - if let Some(tx) = self.get_producer_tx(idx).await { + if let Some(idx) = assigned + && let Some(tx) = self.get_producer_tx(idx).await { let cmd = PlatformEventsCommand { version: Some(CmdVersion::V0( dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0 { @@ -377,7 +373,6 @@ impl EventMux { tracing::debug!(subscription_id = %id, "event_mux: sent Remove command to producer"); } } - } } tracing::debug!(subscriber_id, "event_mux: subscriber removed"); @@ -398,13 +393,11 @@ impl EventMux { if let Some(info) = subs.get(&SubscriptionKey { subscriber_id, id: subscription_id.to_string(), - }) { - if let Some(idx) = info.assigned_producer { - if let Some(Some(tx)) = prods_guard.get(idx) { + }) + && let Some(idx) = info.assigned_producer + && let Some(Some(tx)) = prods_guard.get(idx) { return Some((idx, tx.clone())); } - } - } } // Use round-robin assignment for new subscriptions let idx = self.rr_counter.fetch_add(1, Ordering::Relaxed) % prods_guard.len(); From b8ae8cb086f0b6ba8c9bb02c2621e1b2f2683abe Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Tue, 21 Oct 2025 14:12:56 +0200 Subject: [PATCH 10/40] chore: fix build --- .../src/services/platform_service/mod.rs | 17 ++ .../subscribe_platform_events.rs | 170 ++++++++++++++++++ 2 files changed, 187 insertions(+) create mode 100644 packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs diff --git a/packages/rs-dapi/src/services/platform_service/mod.rs b/packages/rs-dapi/src/services/platform_service/mod.rs index 07d9111a8e2..617dd983ff6 100644 --- a/packages/rs-dapi/src/services/platform_service/mod.rs +++ b/packages/rs-dapi/src/services/platform_service/mod.rs @@ -4,6 +4,7 @@ mod broadcast_state_transition; mod error_mapping; mod get_status; +mod subscribe_platform_events; mod wait_for_state_transition_result; use dapi_grpc::platform::v0::platform_server::Platform; @@ -167,6 +168,22 @@ impl PlatformServiceImpl { impl Platform for PlatformServiceImpl { // Manually implemented methods + // Streaming: multiplexed platform events + type subscribePlatformEventsStream = tokio_stream::wrappers::ReceiverStream< + Result, + >; + + async fn subscribe_platform_events( + &self, + request: dapi_grpc::tonic::Request< + dapi_grpc::tonic::Streaming, + >, + ) -> Result< + dapi_grpc::tonic::Response, + dapi_grpc::tonic::Status, + > { + self.subscribe_platform_events_impl(request).await + } /// Get the status of the whole system /// /// This method retrieves the current status of Drive, Tenderdash, and other components. diff --git a/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs b/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs new file mode 100644 index 00000000000..cd1c176ffdc --- /dev/null +++ b/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs @@ -0,0 +1,170 @@ +use crate::{DapiError, metrics}; +use dapi_grpc::platform::v0::{ + PlatformEventsCommand, PlatformEventsResponse, platform_events_command, + platform_events_response, +}; +use dapi_grpc::tonic::{Request, Response, Status}; +use futures::StreamExt; +use std::sync::Arc; +use tokio::sync::mpsc; +use tokio_stream::wrappers::ReceiverStream; + +use super::PlatformServiceImpl; + +const PLATFORM_EVENTS_STREAM_BUFFER: usize = 512; + +/// Tracks an active platform events session until all clones drop. +struct ActiveSessionGuard; + +impl ActiveSessionGuard { + fn new() -> Arc { + metrics::platform_events_active_sessions_inc(); + Arc::new(Self) + } +} + +impl Drop for ActiveSessionGuard { + fn drop(&mut self) { + metrics::platform_events_active_sessions_dec(); + } +} + +fn platform_events_command_label(command: &PlatformEventsCommand) -> &'static str { + use platform_events_command::Version; + use platform_events_command::platform_events_command_v0::Command; + + match command.version.as_ref() { + Some(Version::V0(v0)) => match v0.command.as_ref() { + Some(Command::Add(_)) => "add", + Some(Command::Remove(_)) => "remove", + Some(Command::Ping(_)) => "ping", + None => "unknown", + }, + + None => "unknown", + } +} + +enum ForwardedVariant { + Event, + Ack, + Error, + Unknown, +} + +fn classify_forwarded_response( + response: &Result, +) -> ForwardedVariant { + match response { + Ok(res) => { + use platform_events_response::Version; + use platform_events_response::platform_events_response_v0::Response; + match res.version.as_ref() { + Some(Version::V0(v0)) => match v0.response.as_ref() { + Some(Response::Event(_)) => ForwardedVariant::Event, + Some(Response::Ack(_)) => ForwardedVariant::Ack, + Some(Response::Error(_)) => ForwardedVariant::Error, + None => ForwardedVariant::Unknown, + }, + None => ForwardedVariant::Unknown, + } + } + Err(_) => ForwardedVariant::Error, + } +} + +impl PlatformServiceImpl { + /// Proxy implementation of Platform::subscribePlatformEvents. + /// + /// Forwards commands from the caller (downlink) upstream to Drive + /// and forwards responses back to the caller. + pub async fn subscribe_platform_events_impl( + &self, + request: Request>, + ) -> Result>>, Status> { + // Inbound commands from the caller (downlink) + let downlink_req_rx = request.into_inner(); + + // Channel to feed commands upstream to Drive + let (uplink_req_tx, uplink_req_rx) = + mpsc::channel::(PLATFORM_EVENTS_STREAM_BUFFER); + + let active_session = ActiveSessionGuard::new(); + + // Spawn a task to forward downlink commands -> uplink channel + { + let mut downlink = downlink_req_rx; + let session_handle = active_session.clone(); + let uplink_req_tx = uplink_req_tx.clone(); + + self.workers.spawn(async move { + let _session_guard = session_handle; + while let Some(cmd) = downlink.next().await { + match cmd { + Ok(msg) => { + let op_label = platform_events_command_label(&msg); + if let Err(e) = uplink_req_tx.send(msg).await { + tracing::debug!( + error = %e, + "Platform events uplink command channel closed; stopping forward" + ); + break; + } else { + metrics::platform_events_command(op_label); + } + } + Err(e) => { + tracing::debug!( + error = %e, + "Error receiving platform event command from downlink" + ); + break; + } + }; + } + tracing::debug!("Platform events downlink stream closed"); + Err::<(), DapiError>(DapiError::ConnectionClosed) + }); + } + + // Call upstream with our command stream + let mut client = self.drive_client.get_client(); + let uplink_resp = client + .subscribe_platform_events(ReceiverStream::new(uplink_req_rx)) + .await?; + metrics::platform_events_upstream_stream_started(); + let mut uplink_resp_rx = uplink_resp.into_inner(); + + // Channel to forward responses back to caller (downlink) + let (downlink_resp_tx, downlink_resp_rx) = + mpsc::channel::>(PLATFORM_EVENTS_STREAM_BUFFER); + + // Spawn a task to forward uplink responses -> downlink + { + let session_handle = active_session; + self.workers.spawn(async move { + let _session_guard = session_handle; + while let Some(msg) = uplink_resp_rx.next().await { + let variant = classify_forwarded_response(&msg); + if downlink_resp_tx.send(msg).await.is_err() { + tracing::debug!( + "Platform events downlink response channel closed; stopping forward" + ); + break; + } else { + match variant { + ForwardedVariant::Event => metrics::platform_events_forwarded_event(), + ForwardedVariant::Ack => metrics::platform_events_forwarded_ack(), + ForwardedVariant::Error => metrics::platform_events_forwarded_error(), + ForwardedVariant::Unknown => {} + } + } + } + tracing::debug!("Platform events uplink response stream closed"); + Err::<(), DapiError>(DapiError::ConnectionClosed) + }); + } + + Ok(Response::new(ReceiverStream::new(downlink_resp_rx))) + } +} From 9b8bc409045d766446319b794ba8244356463163 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Tue, 21 Oct 2025 16:04:28 +0200 Subject: [PATCH 11/40] refactor: rewrite subscriptions to not use bi-directional streams --- Cargo.lock | 8 - .../protos/platform/v0/platform.proto | 65 +- packages/rs-dapi/doc/DESIGN.md | 9 +- packages/rs-dapi/src/metrics.rs | 37 - .../src/services/platform_service/mod.rs | 10 +- .../subscribe_platform_events.rs | 140 +-- packages/rs-dash-event-bus/Cargo.toml | 8 +- packages/rs-dash-event-bus/src/event_mux.rs | 1049 ----------------- .../rs-dash-event-bus/src/grpc_producer.rs | 52 - packages/rs-dash-event-bus/src/lib.rs | 12 +- .../src/local_bus_producer.rs | 181 --- packages/rs-drive-abci/src/query/service.rs | 98 +- packages/rs-sdk/Cargo.toml | 4 +- packages/rs-sdk/examples/platform_events.rs | 96 +- packages/rs-sdk/src/platform/events.rs | 131 +- .../rs-sdk/tests/fetch/platform_events.rs | 108 +- 16 files changed, 261 insertions(+), 1747 deletions(-) delete mode 100644 packages/rs-dash-event-bus/src/event_mux.rs delete mode 100644 packages/rs-dash-event-bus/src/grpc_producer.rs delete mode 100644 packages/rs-dash-event-bus/src/local_bus_producer.rs diff --git a/Cargo.lock b/Cargo.lock index 0b72242cb9f..23f6a4fad46 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1505,10 +1505,8 @@ dependencies = [ "http", "js-sys", "lru", - "once_cell", "platform-wallet", "rs-dapi-client", - "rs-dash-event-bus", "rs-sdk-trusted-context-provider", "rustls-pemfile", "sanitize-filename", @@ -5445,12 +5443,8 @@ dependencies = [ name = "rs-dash-event-bus" version = "2.1.0-pr.2716.1" dependencies = [ - "dapi-grpc", - "futures", "metrics", "tokio", - "tokio-stream", - "tokio-util", "tracing", ] @@ -6739,7 +6733,6 @@ dependencies = [ "futures-core", "pin-project-lite", "tokio", - "tokio-util", ] [[package]] @@ -6779,7 +6772,6 @@ dependencies = [ "futures-core", "futures-io", "futures-sink", - "futures-util", "pin-project-lite", "tokio", ] diff --git a/packages/dapi-grpc/protos/platform/v0/platform.proto b/packages/dapi-grpc/protos/platform/v0/platform.proto index 40eecb65638..e0bdee1ecf1 100644 --- a/packages/dapi-grpc/protos/platform/v0/platform.proto +++ b/packages/dapi-grpc/protos/platform/v0/platform.proto @@ -6,54 +6,21 @@ package org.dash.platform.dapi.v0; import "google/protobuf/timestamp.proto"; -// Platform events streaming (v0) -message PlatformEventsCommand { - message PlatformEventsCommandV0 { - oneof command { - AddSubscriptionV0 add = 1; - RemoveSubscriptionV0 remove = 2; - PingV0 ping = 3; - } +// Platform events subscription (v0) +message PlatformSubscriptionRequest { + message PlatformSubscriptionRequestV0 { + string client_subscription_id = 1; + PlatformFilterV0 filter = 2; } - oneof version { PlatformEventsCommandV0 v0 = 1; } + oneof version { PlatformSubscriptionRequestV0 v0 = 1; } } -message PlatformEventsResponse { - message PlatformEventsResponseV0 { - oneof response { - PlatformEventMessageV0 event = 1; - AckV0 ack = 2; - PlatformErrorV0 error = 3; - } +message PlatformSubscriptionResponse { + message PlatformSubscriptionResponseV0 { + string client_subscription_id = 1; + PlatformEventV0 event = 2; } - oneof version { PlatformEventsResponseV0 v0 = 1; } -} - -message AddSubscriptionV0 { - string client_subscription_id = 1; - PlatformFilterV0 filter = 2; -} - -message RemoveSubscriptionV0 { - string client_subscription_id = 1; -} - -message PingV0 { uint64 nonce = 1; } - -message AckV0 { - string client_subscription_id = 1; - string op = 2; // "add" | "remove" -} - -message PlatformErrorV0 { - string client_subscription_id = 1; - uint32 code = 2; - string message = 3; -} - -message PlatformEventMessageV0 { - string client_subscription_id = 1; - PlatformEventV0 event = 2; + oneof version { PlatformSubscriptionResponseV0 v0 = 1; } } // Initial placeholder filter and event to be refined during integration @@ -65,9 +32,11 @@ message StateTransitionResultFilter { message PlatformFilterV0 { oneof kind { - bool all = 1; // subscribe to all platform events + bool all = 1; // subscribe to all platform events bool block_committed = 2; // subscribe to BlockCommitted events only - StateTransitionResultFilter state_transition_result = 3; // subscribe to StateTransitionResult events (optionally filtered by tx_hash) + StateTransitionResultFilter state_transition_result = + 3; // subscribe to StateTransitionResult events (optionally filtered by + // tx_hash) } } @@ -194,8 +163,8 @@ service Platform { returns (GetGroupActionSignersResponse); // Bi-directional stream for multiplexed platform events subscriptions - rpc subscribePlatformEvents(stream PlatformEventsCommand) - returns (stream PlatformEventsResponse); + rpc SubscribePlatformEvents(PlatformSubscriptionRequest) + returns (stream PlatformSubscriptionResponse); } // Proof message includes cryptographic proofs for validating responses diff --git a/packages/rs-dapi/doc/DESIGN.md b/packages/rs-dapi/doc/DESIGN.md index 70a33af7aec..2057d83cb5d 100644 --- a/packages/rs-dapi/doc/DESIGN.md +++ b/packages/rs-dapi/doc/DESIGN.md @@ -264,7 +264,7 @@ Operational notes: - Access logging: HTTP/JSON-RPC and gRPC traffic share the same access logging layer when configured, so all protocols emit uniform access entries - Platform event streaming is handled via a direct upstream proxy: - - `subscribePlatformEvents` simply forwards every inbound command stream to a single Drive connection and relays responses back without multiplexing + - `subscribePlatformEvents` forwards each inbound subscription request to Drive and relays the resulting event stream without additional multiplexing #### Key Features - **Modular Organization**: Complex methods separated into dedicated modules for maintainability @@ -283,12 +283,11 @@ Operational notes: rs-dapi exposes `subscribePlatformEvents` as a server-streaming endpoint and currently performs a straightforward pass-through to rs-drive-abci. - Public interface: - - Bi-directional gRPC stream: `subscribePlatformEvents(request stream PlatformEventsCommand) -> (response stream PlatformEventsResponse)`. - - Commands (`Add`, `Remove`, `Ping`) and responses (`Event`, `Ack`, `Error`) stay in their protobuf `V0` envelopes end-to-end. + - Server-streaming gRPC method: `subscribePlatformEvents(PlatformSubscriptionRequest) -> (stream PlatformSubscriptionResponse)`. + - Requests carry versioned `V0` envelopes with the client subscription id and filter; responses return the same id alongside the event payload. - Upstream behavior: - - Each client stream obtains its own upstream Drive connection; tokio channels forward commands upstream and pipe responses back downstream without pooling. - - The `EventMux` from `rs-dash-event-bus` is retained for future multiplexing work but does not alter traffic today. + - Each client stream obtains its own upstream Drive connection; responses are forwarded downstream as they arrive without intermediate pooling or command channels. - Observability: - Standard `tracing` logging wraps the forwarders, and the proxy participates in the existing `/metrics` exporter via shared counters. diff --git a/packages/rs-dapi/src/metrics.rs b/packages/rs-dapi/src/metrics.rs index 7692fd14bb9..308dfeafb0e 100644 --- a/packages/rs-dapi/src/metrics.rs +++ b/packages/rs-dapi/src/metrics.rs @@ -66,12 +66,8 @@ pub enum Metric { RequestDuration, /// Platform events: active sessions gauge PlatformEventsActiveSessions, - /// Platform events: commands processed, labels [op] - PlatformEventsCommands, /// Platform events: forwarded events counter PlatformEventsForwardedEvents, - /// Platform events: forwarded acks counter - PlatformEventsForwardedAcks, /// Platform events: forwarded errors counter PlatformEventsForwardedErrors, /// Platform events: upstream streams started counter @@ -91,11 +87,9 @@ impl Metric { Metric::RequestCount => "rsdapi_requests_total", Metric::RequestDuration => "rsdapi_request_duration_seconds", Metric::PlatformEventsActiveSessions => "rsdapi_platform_events_active_sessions", - Metric::PlatformEventsCommands => "rsdapi_platform_events_commands_total", Metric::PlatformEventsForwardedEvents => { "rsdapi_platform_events_forwarded_events_total" } - Metric::PlatformEventsForwardedAcks => "rsdapi_platform_events_forwarded_acks_total", Metric::PlatformEventsForwardedErrors => { "rsdapi_platform_events_forwarded_errors_total" } @@ -120,9 +114,7 @@ impl Metric { Metric::PlatformEventsActiveSessions => { "Current number of active Platform events sessions" } - Metric::PlatformEventsCommands => "Platform events commands processed by operation", Metric::PlatformEventsForwardedEvents => "Platform events forwarded to clients", - Metric::PlatformEventsForwardedAcks => "Platform acks forwarded to clients", Metric::PlatformEventsForwardedErrors => "Platform errors forwarded to clients", Metric::PlatformEventsUpstreamStreams => { "Upstream subscribePlatformEvents streams started" @@ -159,7 +151,6 @@ pub enum Label { // TODO: ensure we have a limited set of endpoints, so that cardinality is controlled and we don't overload Prometheus Endpoint, Status, - Op, } impl Label { @@ -172,7 +163,6 @@ impl Label { Label::Protocol => "protocol", Label::Endpoint => "endpoint", Label::Status => "status", - Label::Op => "op", } } } @@ -251,15 +241,6 @@ pub static REQUEST_DURATION_SECONDS: Lazy = Lazy::new(|| { .expect("create histogram vec") }); -pub static PLATFORM_EVENTS_COMMANDS: Lazy = Lazy::new(|| { - register_int_counter_vec!( - Metric::PlatformEventsCommands.name(), - Metric::PlatformEventsCommands.help(), - &[Label::Op.name()] - ) - .expect("create counter vec") -}); - pub static PLATFORM_EVENTS_FORWARDED_EVENTS: Lazy = Lazy::new(|| { register_int_counter!( Metric::PlatformEventsForwardedEvents.name(), @@ -268,14 +249,6 @@ pub static PLATFORM_EVENTS_FORWARDED_EVENTS: Lazy = Lazy::new(|| { .expect("create counter") }); -pub static PLATFORM_EVENTS_FORWARDED_ACKS: Lazy = Lazy::new(|| { - register_int_counter!( - Metric::PlatformEventsForwardedAcks.name(), - Metric::PlatformEventsForwardedAcks.help() - ) - .expect("create counter") -}); - pub static PLATFORM_EVENTS_FORWARDED_ERRORS: Lazy = Lazy::new(|| { register_int_counter!( Metric::PlatformEventsForwardedErrors.name(), @@ -533,21 +506,11 @@ pub fn platform_events_active_sessions_dec() { PLATFORM_EVENTS_ACTIVE_SESSIONS.dec(); } -#[inline] -pub fn platform_events_command(op: &str) { - PLATFORM_EVENTS_COMMANDS.with_label_values(&[op]).inc(); -} - #[inline] pub fn platform_events_forwarded_event() { PLATFORM_EVENTS_FORWARDED_EVENTS.inc(); } -#[inline] -pub fn platform_events_forwarded_ack() { - PLATFORM_EVENTS_FORWARDED_ACKS.inc(); -} - #[inline] pub fn platform_events_forwarded_error() { PLATFORM_EVENTS_FORWARDED_ERRORS.inc(); diff --git a/packages/rs-dapi/src/services/platform_service/mod.rs b/packages/rs-dapi/src/services/platform_service/mod.rs index 617dd983ff6..f5134b320a8 100644 --- a/packages/rs-dapi/src/services/platform_service/mod.rs +++ b/packages/rs-dapi/src/services/platform_service/mod.rs @@ -169,17 +169,15 @@ impl Platform for PlatformServiceImpl { // Manually implemented methods // Streaming: multiplexed platform events - type subscribePlatformEventsStream = tokio_stream::wrappers::ReceiverStream< - Result, + type SubscribePlatformEventsStream = tokio_stream::wrappers::ReceiverStream< + Result, >; async fn subscribe_platform_events( &self, - request: dapi_grpc::tonic::Request< - dapi_grpc::tonic::Streaming, - >, + request: dapi_grpc::tonic::Request, ) -> Result< - dapi_grpc::tonic::Response, + dapi_grpc::tonic::Response, dapi_grpc::tonic::Status, > { self.subscribe_platform_events_impl(request).await diff --git a/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs b/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs index cd1c176ffdc..d8fc10889c3 100644 --- a/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs +++ b/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs @@ -1,8 +1,5 @@ use crate::{DapiError, metrics}; -use dapi_grpc::platform::v0::{ - PlatformEventsCommand, PlatformEventsResponse, platform_events_command, - platform_events_response, -}; +use dapi_grpc::platform::v0::{PlatformSubscriptionRequest, PlatformSubscriptionResponse}; use dapi_grpc::tonic::{Request, Response, Status}; use futures::StreamExt; use std::sync::Arc; @@ -29,115 +26,26 @@ impl Drop for ActiveSessionGuard { } } -fn platform_events_command_label(command: &PlatformEventsCommand) -> &'static str { - use platform_events_command::Version; - use platform_events_command::platform_events_command_v0::Command; - - match command.version.as_ref() { - Some(Version::V0(v0)) => match v0.command.as_ref() { - Some(Command::Add(_)) => "add", - Some(Command::Remove(_)) => "remove", - Some(Command::Ping(_)) => "ping", - None => "unknown", - }, - - None => "unknown", - } -} - -enum ForwardedVariant { - Event, - Ack, - Error, - Unknown, -} - -fn classify_forwarded_response( - response: &Result, -) -> ForwardedVariant { - match response { - Ok(res) => { - use platform_events_response::Version; - use platform_events_response::platform_events_response_v0::Response; - match res.version.as_ref() { - Some(Version::V0(v0)) => match v0.response.as_ref() { - Some(Response::Event(_)) => ForwardedVariant::Event, - Some(Response::Ack(_)) => ForwardedVariant::Ack, - Some(Response::Error(_)) => ForwardedVariant::Error, - None => ForwardedVariant::Unknown, - }, - None => ForwardedVariant::Unknown, - } - } - Err(_) => ForwardedVariant::Error, - } -} - impl PlatformServiceImpl { /// Proxy implementation of Platform::subscribePlatformEvents. /// - /// Forwards commands from the caller (downlink) upstream to Drive - /// and forwards responses back to the caller. + /// Forwards a subscription request upstream to Drive and streams responses back to the caller. pub async fn subscribe_platform_events_impl( &self, - request: Request>, - ) -> Result>>, Status> { - // Inbound commands from the caller (downlink) - let downlink_req_rx = request.into_inner(); - - // Channel to feed commands upstream to Drive - let (uplink_req_tx, uplink_req_rx) = - mpsc::channel::(PLATFORM_EVENTS_STREAM_BUFFER); - + request: Request, + ) -> Result>>, Status> + { let active_session = ActiveSessionGuard::new(); - // Spawn a task to forward downlink commands -> uplink channel - { - let mut downlink = downlink_req_rx; - let session_handle = active_session.clone(); - let uplink_req_tx = uplink_req_tx.clone(); - - self.workers.spawn(async move { - let _session_guard = session_handle; - while let Some(cmd) = downlink.next().await { - match cmd { - Ok(msg) => { - let op_label = platform_events_command_label(&msg); - if let Err(e) = uplink_req_tx.send(msg).await { - tracing::debug!( - error = %e, - "Platform events uplink command channel closed; stopping forward" - ); - break; - } else { - metrics::platform_events_command(op_label); - } - } - Err(e) => { - tracing::debug!( - error = %e, - "Error receiving platform event command from downlink" - ); - break; - } - }; - } - tracing::debug!("Platform events downlink stream closed"); - Err::<(), DapiError>(DapiError::ConnectionClosed) - }); - } - - // Call upstream with our command stream let mut client = self.drive_client.get_client(); - let uplink_resp = client - .subscribe_platform_events(ReceiverStream::new(uplink_req_rx)) - .await?; + let uplink_resp = client.subscribe_platform_events(request).await?; metrics::platform_events_upstream_stream_started(); let mut uplink_resp_rx = uplink_resp.into_inner(); // Channel to forward responses back to caller (downlink) - let (downlink_resp_tx, downlink_resp_rx) = - mpsc::channel::>(PLATFORM_EVENTS_STREAM_BUFFER); + let (downlink_resp_tx, downlink_resp_rx) = mpsc::channel::< + Result, + >(PLATFORM_EVENTS_STREAM_BUFFER); // Spawn a task to forward uplink responses -> downlink { @@ -145,18 +53,24 @@ impl PlatformServiceImpl { self.workers.spawn(async move { let _session_guard = session_handle; while let Some(msg) = uplink_resp_rx.next().await { - let variant = classify_forwarded_response(&msg); - if downlink_resp_tx.send(msg).await.is_err() { - tracing::debug!( - "Platform events downlink response channel closed; stopping forward" - ); - break; - } else { - match variant { - ForwardedVariant::Event => metrics::platform_events_forwarded_event(), - ForwardedVariant::Ack => metrics::platform_events_forwarded_ack(), - ForwardedVariant::Error => metrics::platform_events_forwarded_error(), - ForwardedVariant::Unknown => {} + match msg { + Ok(response) => { + metrics::platform_events_forwarded_event(); + if downlink_resp_tx.send(Ok(response)).await.is_err() { + tracing::debug!( + "Platform events downlink response channel closed; stopping forward" + ); + break; + } + } + Err(status) => { + metrics::platform_events_forwarded_error(); + if downlink_resp_tx.send(Err(status)).await.is_err() { + tracing::debug!( + "Platform events downlink response channel closed while forwarding error" + ); + break; + } } } } diff --git a/packages/rs-dash-event-bus/Cargo.toml b/packages/rs-dash-event-bus/Cargo.toml index 133d746fed3..b2f54b545b3 100644 --- a/packages/rs-dash-event-bus/Cargo.toml +++ b/packages/rs-dash-event-bus/Cargo.toml @@ -3,7 +3,7 @@ name = "rs-dash-event-bus" version = "2.1.0-pr.2716.1" edition = "2024" license = "MIT" -description = "Shared event bus and Platform events multiplexer for Dash Platform (rs-dapi, rs-drive-abci, rs-sdk)" +description = "Shared event bus utilities for Dash Platform (rs-dapi, rs-drive-abci, rs-sdk)" [lib] name = "dash_event_bus" @@ -15,13 +15,7 @@ metrics = ["dep:metrics"] [dependencies] tokio = { version = "1", features = ["rt", "macros", "sync", "time"] } -tokio-stream = { version = "0.1", features = ["sync"] } -tokio-util = { version = "0.7", features = ["rt"] } tracing = "0.1" -futures = "0.3" - -# Internal workspace crates -dapi-grpc = { path = "../dapi-grpc" } # Optional metrics metrics = { version = "0.24.2", optional = true } diff --git a/packages/rs-dash-event-bus/src/event_mux.rs b/packages/rs-dash-event-bus/src/event_mux.rs deleted file mode 100644 index b891eb9824c..00000000000 --- a/packages/rs-dash-event-bus/src/event_mux.rs +++ /dev/null @@ -1,1049 +0,0 @@ -//! EventMux: a generic multiplexer between multiple Platform event subscribers -//! and producers. Subscribers send `PlatformEventsCommand` and receive -//! `PlatformEventsResponse`. Producers receive commands and generate responses. -//! -//! Features: -//! - Multiple subscribers and producers -//! - Round-robin dispatch of commands to producers -//! - Register per-subscriber filters on Add, remove on Remove -//! - Fan-out responses to all subscribers whose filters match - -use std::collections::{BTreeMap, BTreeSet}; -use std::sync::Arc; -use std::sync::atomic::{AtomicUsize, Ordering}; - -use dapi_grpc::platform::v0::PlatformEventsCommand; -use dapi_grpc::platform::v0::platform_events_command::Version as CmdVersion; -use dapi_grpc::platform::v0::platform_events_command::platform_events_command_v0::Command as Cmd; -use dapi_grpc::platform::v0::platform_events_response::platform_events_response_v0::Response as Resp; -use dapi_grpc::tonic::Status; -use futures::SinkExt; -use tokio::join; -use tokio::sync::{Mutex, mpsc}; -use tokio_util::sync::PollSender; - -use crate::event_bus::{EventBus, Filter as EventFilter, SubscriptionHandle}; -use dapi_grpc::platform::v0::PlatformEventsResponse; -use dapi_grpc::platform::v0::PlatformFilterV0; - -pub type EventsCommandResult = Result; -pub type EventsResponseResult = Result; - -const COMMAND_CHANNEL_CAPACITY: usize = 128; -const RESPONSE_CHANNEL_CAPACITY: usize = 512; - -pub type CommandSender = mpsc::Sender; -pub type CommandReceiver = mpsc::Receiver; - -pub type ResponseSender = mpsc::Sender; -pub type ResponseReceiver = mpsc::Receiver; - -/// EventMux: manages subscribers and producers, routes commands and responses. -pub struct EventMux { - bus: EventBus, - producers: Arc>>>, - rr_counter: Arc, - tasks: Arc>>, - subscriptions: Arc>>, - next_subscriber_id: Arc, -} - -impl Default for EventMux { - fn default() -> Self { - Self::new() - } -} - -impl EventMux { - async fn handle_subscriber_disconnect(&self, subscriber_id: u64) { - tracing::debug!(subscriber_id, "event_mux: handling subscriber disconnect"); - self.remove_subscriber(subscriber_id).await; - } - /// Create a new, empty EventMux without producers or subscribers. - pub fn new() -> Self { - Self { - bus: EventBus::new(), - producers: Arc::new(Mutex::new(Vec::new())), - rr_counter: Arc::new(AtomicUsize::new(0)), - tasks: Arc::new(Mutex::new(tokio::task::JoinSet::new())), - subscriptions: Arc::new(std::sync::Mutex::new(BTreeMap::new())), - next_subscriber_id: Arc::new(AtomicUsize::new(1)), - } - } - - /// Register a new producer. Returns an `EventProducer` comprised of: - /// - `cmd_rx`: producer receives commands from the mux - /// - `resp_tx`: producer sends generated responses into the mux - pub async fn add_producer(&self) -> EventProducer { - let (cmd_tx, cmd_rx) = mpsc::channel::(COMMAND_CHANNEL_CAPACITY); - let (resp_tx, resp_rx) = mpsc::channel::(RESPONSE_CHANNEL_CAPACITY); - - // Store command sender so mux can forward commands via round-robin - { - let mut prods = self.producers.lock().await; - prods.push(Some(cmd_tx)); - } - - // Route producer responses into the event bus - let bus = self.bus.clone(); - let mux = self.clone(); - let producer_index = { - let prods = self.producers.lock().await; - prods.len().saturating_sub(1) - }; - { - let mut tasks = self.tasks.lock().await; - tasks.spawn(async move { - let mut rx = resp_rx; - while let Some(resp) = rx.recv().await { - match resp { - Ok(response) => { - bus.notify(response).await; - } - Err(e) => { - tracing::error!(error = %e, "event_mux: producer response error"); - } - } - } - - // producer disconnected - tracing::warn!(index = producer_index, "event_mux: producer disconnected"); - mux.on_producer_disconnected(producer_index).await; - }); - } - - EventProducer { cmd_rx, resp_tx } - } - - /// Register a new subscriber. - /// - /// Subscriber is automatically cleaned up when channels are closed. - pub async fn add_subscriber(&self) -> EventSubscriber { - let (sub_cmd_tx, sub_cmd_rx) = - mpsc::channel::(COMMAND_CHANNEL_CAPACITY); - let (sub_resp_tx, sub_resp_rx) = - mpsc::channel::(RESPONSE_CHANNEL_CAPACITY); - - let mux = self.clone(); - let subscriber_id = self.next_subscriber_id.fetch_add(1, Ordering::Relaxed) as u64; - - { - let mut tasks = self.tasks.lock().await; - tasks.spawn(async move { - mux.run_subscriber_loop(subscriber_id, sub_cmd_rx, sub_resp_tx) - .await; - }); - } - - EventSubscriber { - cmd_tx: sub_cmd_tx, - resp_rx: sub_resp_rx, - } - } - - async fn run_subscriber_loop( - self, - subscriber_id: u64, - mut sub_cmd_rx: CommandReceiver, - sub_resp_tx: ResponseSender, - ) { - tracing::debug!(subscriber_id, "event_mux: starting subscriber loop"); - - loop { - let cmd = match sub_cmd_rx.recv().await { - Some(Ok(c)) => c, - Some(Err(e)) => { - tracing::warn!(subscriber_id, error=%e, "event_mux: subscriber command error"); - continue; - } - None => { - tracing::debug!( - subscriber_id, - "event_mux: subscriber command channel closed" - ); - break; - } - }; - - if let Some(CmdVersion::V0(v0)) = &cmd.version { - match &v0.command { - Some(Cmd::Add(add)) => { - let id = add.client_subscription_id.clone(); - tracing::debug!(subscriber_id, subscription_id = %id, "event_mux: adding subscription"); - - // If a subscription with this id already exists for this subscriber, - // remove it first to avoid duplicate fan-out and leaked handles. - if let Some((prev_sub_id, prev_handle_id, prev_assigned)) = { - let subs = self.subscriptions.lock().unwrap(); - subs.get(&SubscriptionKey { - subscriber_id, - id: id.clone(), - }) - .map(|info| { - (info.subscriber_id, info.handle.id(), info.assigned_producer) - }) - } - && prev_sub_id == subscriber_id { - tracing::warn!( - subscriber_id, - subscription_id = %id, - "event_mux: duplicate Add detected, removing previous subscription first" - ); - // Remove previous bus subscription - self.bus.remove_subscription(prev_handle_id).await; - // Notify previously assigned producer about removal - if let Some(prev_idx) = prev_assigned - && let Some(tx) = self.get_producer_tx(prev_idx).await { - let remove_cmd = PlatformEventsCommand { - version: Some(CmdVersion::V0( - dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0 { - command: Some(Cmd::Remove( - dapi_grpc::platform::v0::RemoveSubscriptionV0 { - client_subscription_id: id.clone(), - }, - )), - }, - )), - }; - if tx.send(Ok(remove_cmd)).await.is_err() { - tracing::debug!( - subscription_id = %id, - "event_mux: failed to send duplicate Remove to producer" - ); - } - } - // Drop previous mapping entry (it will be replaced below) - let _ = { - self.subscriptions.lock().unwrap().remove(&SubscriptionKey { - subscriber_id, - id: id.clone(), - }) - }; - } - - // Create subscription filtered by client_subscription_id and forward events - let handle = self - .bus - .add_subscription(IdFilter { id: id.clone() }) - .await - .no_unsubscribe_on_drop(); - - { - let mut subs = self.subscriptions.lock().unwrap(); - subs.insert( - SubscriptionKey { - subscriber_id, - id: id.clone(), - }, - SubscriptionInfo { - subscriber_id, - filter: add.filter.clone(), - assigned_producer: None, - handle: handle.clone(), - }, - ); - } - - // Assign producer for this subscription - if let Some((_idx, prod_tx)) = self - .assign_producer_for_subscription(subscriber_id, &id) - .await - { - if prod_tx.send(Ok(cmd)).await.is_err() { - tracing::debug!(subscription_id = %id, "event_mux: failed to send Add to producer - channel closed"); - } - } else { - // TODO: handle no producers available, possibly spawned jobs didn't start yet - tracing::warn!(subscription_id = %id, "event_mux: no producers available for Add"); - } - - // Start fan-out task for this subscription - let tx = sub_resp_tx.clone(); - let mux = self.clone(); - let sub_id = subscriber_id; - let mut tasks = self.tasks.lock().await; - tasks.spawn(async move { - let h = handle; - loop { - match h.recv().await { - Some(resp) => { - if tx.send(Ok(resp)).await.is_err() { - tracing::debug!(subscription_id = %id, "event_mux: failed to send response - subscriber channel closed"); - mux.handle_subscriber_disconnect(sub_id).await; - break; - } - } - None => { - tracing::debug!(subscription_id = %id, "event_mux: subscription ended"); - mux.handle_subscriber_disconnect(sub_id).await; - break; - } - } - } - }); - } - Some(Cmd::Remove(rem)) => { - let id = rem.client_subscription_id.clone(); - tracing::debug!(subscriber_id, subscription_id = %id, "event_mux: removing subscription"); - - // Remove subscription from bus and registry, and get assigned producer - let removed = { - self.subscriptions.lock().unwrap().remove(&SubscriptionKey { - subscriber_id, - id: id.clone(), - }) - }; - let assigned = if let Some(info) = removed { - self.bus.remove_subscription(info.handle.id()).await; - info.assigned_producer - } else { - None - }; - - if let Some(idx) = assigned - && let Some(tx) = self.get_producer_tx(idx).await - && tx.send(Ok(cmd)).await.is_err() { - tracing::debug!(subscription_id = %id, "event_mux: failed to send Remove to producer - channel closed"); - self.handle_subscriber_disconnect(subscriber_id).await; - } - } - _ => {} - } - } - } - - // subscriber disconnected: use the centralized cleanup method - tracing::debug!(subscriber_id, "event_mux: subscriber disconnected"); - self.handle_subscriber_disconnect(subscriber_id).await; - } - - /// Remove a subscriber and clean up all associated resources - pub async fn remove_subscriber(&self, subscriber_id: u64) { - tracing::debug!(subscriber_id, "event_mux: removing subscriber"); - - // Get all subscription IDs for this subscriber by iterating through subscriptions - let keys: Vec = { - let subs = self.subscriptions.lock().unwrap(); - subs.iter() - .filter_map(|(key, info)| { - if info.subscriber_id == subscriber_id { - Some(key.clone()) - } else { - None - } - }) - .collect() - }; - - tracing::debug!( - subscriber_id, - subscription_count = keys.len(), - "event_mux: found subscriptions for subscriber" - ); - - // Remove each subscription from the bus and notify producers - for key in keys { - let id = key.id.clone(); - let removed = { self.subscriptions.lock().unwrap().remove(&key) }; - let assigned = if let Some(info) = removed { - self.bus.remove_subscription(info.handle.id()).await; - tracing::debug!(subscription_id = %id, "event_mux: removed subscription from bus"); - info.assigned_producer - } else { - None - }; - - // Send remove command to assigned producer - if let Some(idx) = assigned - && let Some(tx) = self.get_producer_tx(idx).await { - let cmd = PlatformEventsCommand { - version: Some(CmdVersion::V0( - dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0 { - command: Some(Cmd::Remove( - dapi_grpc::platform::v0::RemoveSubscriptionV0 { - client_subscription_id: id.clone(), - }, - )), - }, - )), - }; - if tx.send(Ok(cmd)).await.is_err() { - tracing::debug!(subscription_id = %id, "event_mux: failed to send Remove to producer - channel closed"); - } else { - tracing::debug!(subscription_id = %id, "event_mux: sent Remove command to producer"); - } - } - } - - tracing::debug!(subscriber_id, "event_mux: subscriber removed"); - } - - async fn assign_producer_for_subscription( - &self, - subscriber_id: u64, - subscription_id: &str, - ) -> Option<(usize, CommandSender)> { - let prods_guard = self.producers.lock().await; - if prods_guard.is_empty() { - return None; - } - // Prefer existing assignment - { - let subs = self.subscriptions.lock().unwrap(); - if let Some(info) = subs.get(&SubscriptionKey { - subscriber_id, - id: subscription_id.to_string(), - }) - && let Some(idx) = info.assigned_producer - && let Some(Some(tx)) = prods_guard.get(idx) { - return Some((idx, tx.clone())); - } - } - // Use round-robin assignment for new subscriptions - let idx = self.rr_counter.fetch_add(1, Ordering::Relaxed) % prods_guard.len(); - let mut chosen_idx = idx; - - // Find first alive producer starting from round-robin position - let chosen = loop { - if let Some(Some(tx)) = prods_guard.get(chosen_idx) { - break Some((chosen_idx, tx.clone())); - } - chosen_idx = (chosen_idx + 1) % prods_guard.len(); - if chosen_idx == idx { - break None; // Cycled through all producers - } - }; - - drop(prods_guard); - if let Some((idx, tx)) = chosen { - if let Some(info) = self - .subscriptions - .lock() - .unwrap() - .get_mut(&SubscriptionKey { - subscriber_id, - id: subscription_id.to_string(), - }) - { - info.assigned_producer = Some(idx); - } - Some((idx, tx)) - } else { - None - } - } - - async fn get_producer_tx(&self, idx: usize) -> Option { - let prods = self.producers.lock().await; - prods.get(idx).and_then(|o| o.as_ref().cloned()) - } - - async fn on_producer_disconnected(&self, index: usize) { - // mark slot None - { - let mut prods = self.producers.lock().await; - if index < prods.len() { - prods[index] = None; - } - } - // collect affected subscribers - let affected_subscribers: BTreeSet = { - let subs = self.subscriptions.lock().unwrap(); - subs.iter() - .filter_map(|(_id, info)| { - if info.assigned_producer == Some(index) { - Some(info.subscriber_id) - } else { - None - } - }) - .collect() - }; - - // Remove all affected subscribers using the centralized method - for sub_id in affected_subscribers { - tracing::warn!( - subscriber_id = sub_id, - producer_index = index, - "event_mux: closing subscriber due to producer disconnect" - ); - self.remove_subscriber(sub_id).await; - } - // Note: reconnection of the actual producer transport is delegated to the caller. - } -} - -// Hashing moved to murmur3::murmur3_32 for deterministic producer selection. - -impl Clone for EventMux { - fn clone(&self) -> Self { - Self { - bus: self.bus.clone(), - producers: self.producers.clone(), - rr_counter: self.rr_counter.clone(), - tasks: self.tasks.clone(), - subscriptions: self.subscriptions.clone(), - next_subscriber_id: self.next_subscriber_id.clone(), - } - } -} - -impl EventMux { - /// Convenience API: subscribe directly with a filter and receive a subscription handle. - /// This method creates an internal subscription keyed by a generated client_subscription_id, - /// assigns a producer, sends the Add command upstream, and returns the id with an event bus handle. - pub async fn subscribe( - &self, - filter: PlatformFilterV0, - ) -> Result<(String, SubscriptionHandle), Status> { - let subscriber_id = self.next_subscriber_id.fetch_add(1, Ordering::Relaxed) as u64; - let id = format!("sub-{}", subscriber_id); - - // Create bus subscription and register mapping - let handle = self.bus.add_subscription(IdFilter { id: id.clone() }).await; - { - let mut subs = self.subscriptions.lock().unwrap(); - subs.insert( - SubscriptionKey { - subscriber_id, - id: id.clone(), - }, - SubscriptionInfo { - subscriber_id, - filter: Some(filter.clone()), - assigned_producer: None, - handle: handle.clone(), - }, - ); - } - - // Assign producer and send Add - if let Some((_idx, tx)) = self - .assign_producer_for_subscription(subscriber_id, &id) - .await - { - let cmd = PlatformEventsCommand { - version: Some(CmdVersion::V0( - dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0 { - command: Some(Cmd::Add(dapi_grpc::platform::v0::AddSubscriptionV0 { - client_subscription_id: id.clone(), - filter: Some(filter.clone()), - })), - }, - )), - }; - if tx.send(Ok(cmd)).await.is_err() { - tracing::debug!( - subscription_id = %id, - "event_mux: failed to send Add to assigned producer" - ); - } - - Ok((id, handle)) - } else { - tracing::warn!(subscription_id = %id, "event_mux: no producers available for Add"); - Err(Status::unavailable("no producers available")) - } - } -} - -/// Handle used by application code to implement a concrete producer. -/// - `cmd_rx`: read commands from the mux -/// - `resp_tx`: send generated responses into the mux -pub struct EventProducer { - pub cmd_rx: CommandReceiver, - pub resp_tx: ResponseSender, -} - -impl EventProducer { - /// Forward all messages from cmd_rx to self.cmd_tx and form resp_rx to self.resp_tx - pub async fn forward(self, mut cmd_tx: C, resp_rx: R) - where - C: futures::Sink + Unpin + Send + 'static, - R: futures::Stream + Unpin + Send + 'static, - // R: AsyncRead + Unpin + ?Sized, - // W: AsyncWrite + Unpin + ?Sized, - { - use futures::stream::StreamExt; - - let mut cmd_rx = self.cmd_rx; - - let resp_tx = self.resp_tx; - // let workers = JoinSet::new(); - let cmd_worker = tokio::spawn(async move { - while let Some(cmd) = cmd_rx.recv().await { - if cmd_tx.send(cmd).await.is_err() { - tracing::warn!("event_mux: failed to forward command to producer"); - break; - } - } - tracing::error!("event_mux: command channel closed, stopping producer forwarder"); - }); - - let resp_worker = tokio::spawn(async move { - let mut rx = resp_rx; - while let Some(resp) = rx.next().await { - if resp_tx.send(resp).await.is_err() { - tracing::warn!("event_mux: failed to forward response to mux"); - break; - } - } - tracing::error!( - "event_mux: response channel closed, stopping producer response forwarder" - ); - }); - - let _ = join!(cmd_worker, resp_worker); - } -} -/// Handle used by application code to implement a concrete subscriber. -/// Subscriber is automatically cleaned up when channels are closed. -pub struct EventSubscriber { - pub cmd_tx: CommandSender, - pub resp_rx: ResponseReceiver, -} - -impl EventSubscriber { - /// Forward all messages from cmd_rx to self.cmd_tx and from self.resp_rx to resp_tx - pub async fn forward(self, cmd_rx: C, mut resp_tx: R) - where - C: futures::Stream + Unpin + Send + 'static, - R: futures::Sink + Unpin + Send + 'static, - { - use futures::stream::StreamExt; - - let cmd_tx = self.cmd_tx; - let mut resp_rx = self.resp_rx; - - let cmd_worker = tokio::spawn(async move { - let mut rx = cmd_rx; - while let Some(cmd) = rx.next().await { - if cmd_tx.send(cmd).await.is_err() { - tracing::warn!("event_mux: failed to forward command from subscriber"); - break; - } - } - tracing::error!( - "event_mux: subscriber command channel closed, stopping command forwarder" - ); - }); - - let resp_worker = tokio::spawn(async move { - while let Some(resp) = resp_rx.recv().await { - if resp_tx.send(resp).await.is_err() { - tracing::warn!("event_mux: failed to forward response to subscriber"); - break; - } - } - tracing::error!( - "event_mux: subscriber response channel closed, stopping response forwarder" - ); - }); - - let _ = join!(cmd_worker, resp_worker); - } -} // ---- Filters ---- - -#[derive(Clone, Debug)] -pub struct IdFilter { - id: String, -} - -impl EventFilter for IdFilter { - fn matches(&self, event: &PlatformEventsResponse) -> bool { - if let Some(dapi_grpc::platform::v0::platform_events_response::Version::V0(v0)) = - &event.version - { - match &v0.response { - Some(Resp::Event(ev)) => ev.client_subscription_id == self.id, - Some(Resp::Ack(ack)) => ack.client_subscription_id == self.id, - Some(Resp::Error(err)) => err.client_subscription_id == self.id, - None => false, - } - } else { - false - } - } -} - -struct SubscriptionInfo { - subscriber_id: u64, - #[allow(dead_code)] - filter: Option, - assigned_producer: Option, - handle: SubscriptionHandle, -} - -#[derive(Clone, Ord, PartialOrd, Eq, PartialEq, Debug)] -struct SubscriptionKey { - subscriber_id: u64, - id: String, -} - -/// Public alias for platform events subscription handle used by SDK and DAPI. -pub type PlatformEventsSubscriptionHandle = SubscriptionHandle; - -/// Create a bounded Sink from an mpsc Sender that maps errors to tonic::Status -pub fn sender_sink( - sender: mpsc::Sender, -) -> impl futures::Sink { - Box::pin( - PollSender::new(sender) - .sink_map_err(|_| Status::internal("Failed to send command to PlatformEventsMux")), - ) -} - -/// Create a bounded Sink that accepts `Result` and forwards `Ok(T)` through the sender -/// while propagating errors. -pub fn result_sender_sink( - sender: mpsc::Sender, -) -> impl futures::Sink, Error = Status> { - Box::pin( - PollSender::new(sender) - .sink_map_err(|_| Status::internal("Failed to send command to PlatformEventsMux")) - .with(|value| async move { value }), - ) -} - -#[cfg(test)] -mod tests { - use super::sender_sink; - use super::*; - use dapi_grpc::platform::v0::platform_event_v0 as pe; - use dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0; - use dapi_grpc::platform::v0::platform_events_response::PlatformEventsResponseV0; - use dapi_grpc::platform::v0::{PlatformEventMessageV0, PlatformEventV0, PlatformFilterV0}; - use std::collections::HashMap; - use tokio::time::{Duration, timeout}; - - fn make_add_cmd(id: &str) -> PlatformEventsCommand { - PlatformEventsCommand { - version: Some(CmdVersion::V0(PlatformEventsCommandV0 { - command: Some(Cmd::Add(dapi_grpc::platform::v0::AddSubscriptionV0 { - client_subscription_id: id.to_string(), - filter: Some(PlatformFilterV0::default()), - })), - })), - } - } - - fn make_event_resp(id: &str) -> PlatformEventsResponse { - let meta = pe::BlockMetadata { - height: 1, - time_ms: 0, - block_id_hash: vec![], - }; - let evt = PlatformEventV0 { - event: Some(pe::Event::BlockCommitted(pe::BlockCommitted { - meta: Some(meta), - tx_count: 0, - })), - }; - - PlatformEventsResponse { - version: Some( - dapi_grpc::platform::v0::platform_events_response::Version::V0( - PlatformEventsResponseV0 { - response: Some(Resp::Event(PlatformEventMessageV0 { - client_subscription_id: id.to_string(), - event: Some(evt), - })), - }, - ), - ), - } - } - - #[tokio::test] - async fn should_deliver_events_once_per_subscriber_with_shared_id() { - let mux = EventMux::new(); - - // Single producer captures Add/Remove commands and accepts responses - let EventProducer { - mut cmd_rx, - resp_tx, - } = mux.add_producer().await; - - // Two subscribers share the same client_subscription_id - let EventSubscriber { - cmd_tx: sub1_cmd_tx, - resp_rx: mut resp_rx1, - } = mux.add_subscriber().await; - let EventSubscriber { - cmd_tx: sub2_cmd_tx, - resp_rx: mut resp_rx2, - } = mux.add_subscriber().await; - - let sub_id = "dup-sub"; - - sub1_cmd_tx - .send(Ok(make_add_cmd(sub_id))) - .await - .expect("send add for subscriber 1"); - sub2_cmd_tx - .send(Ok(make_add_cmd(sub_id))) - .await - .expect("send add for subscriber 2"); - - // Ensure producer receives both Add commands - for _ in 0..2 { - let got = timeout(Duration::from_secs(1), cmd_rx.recv()) - .await - .expect("timeout waiting for Add") - .expect("producer channel closed") - .expect("Add command error"); - match got.version.and_then(|v| match v { - CmdVersion::V0(v0) => v0.command, - }) { - Some(Cmd::Add(a)) => assert_eq!(a.client_subscription_id, sub_id), - other => panic!("expected Add command, got {:?}", other), - } - } - - // Emit a single event targeting the shared subscription id - resp_tx - .send(Ok(make_event_resp(sub_id))) - .await - .expect("failed to send event into mux"); - - let extract_id = |resp: PlatformEventsResponse| -> String { - match resp.version.and_then(|v| match v { - dapi_grpc::platform::v0::platform_events_response::Version::V0(v0) => { - v0.response.and_then(|r| match r { - Resp::Event(m) => Some(m.client_subscription_id), - _ => None, - }) - } - }) { - Some(id) => id, - None => panic!("unexpected response variant"), - } - }; - - let ev1 = timeout(Duration::from_secs(1), resp_rx1.recv()) - .await - .expect("timeout waiting for subscriber1 event") - .expect("subscriber1 channel closed") - .expect("subscriber1 event error"); - let ev2 = timeout(Duration::from_secs(1), resp_rx2.recv()) - .await - .expect("timeout waiting for subscriber2 event") - .expect("subscriber2 channel closed") - .expect("subscriber2 event error"); - - assert_eq!(extract_id(ev1), sub_id); - assert_eq!(extract_id(ev2), sub_id); - - // Ensure no duplicate deliveries per subscriber - assert!( - timeout(Duration::from_millis(100), resp_rx1.recv()) - .await - .is_err() - ); - assert!( - timeout(Duration::from_millis(100), resp_rx2.recv()) - .await - .is_err() - ); - - // Drop subscribers to trigger Remove for both - drop(sub1_cmd_tx); - drop(resp_rx1); - drop(sub2_cmd_tx); - drop(resp_rx2); - - for _ in 0..2 { - let got = timeout(Duration::from_secs(1), cmd_rx.recv()) - .await - .expect("timeout waiting for Remove") - .expect("producer channel closed") - .expect("Remove command error"); - match got.version.and_then(|v| match v { - CmdVersion::V0(v0) => v0.command, - }) { - Some(Cmd::Remove(r)) => assert_eq!(r.client_subscription_id, sub_id), - other => panic!("expected Remove command, got {:?}", other), - } - } - } - - #[tokio::test] - async fn mux_chain_three_layers_delivers_once_per_subscriber() { - use tokio_stream::wrappers::ReceiverStream; - - // Build three muxes - let mux1 = EventMux::new(); - let mux2 = EventMux::new(); - let mux3 = EventMux::new(); - - // Bridge: Mux1 -> Producer1a -> Subscriber2a -> Mux2 - // and Mux1 -> Producer1b -> Subscriber2b -> Mux2 - let prod1a = mux1.add_producer().await; - let sub2a = mux2.add_subscriber().await; - // Use a sink that accepts EventsCommandResult directly (no extra Result nesting) - let sub2a_cmd_sink = sender_sink(sub2a.cmd_tx.clone()); - let sub2a_resp_stream = ReceiverStream::new(sub2a.resp_rx); - tokio::spawn(async move { prod1a.forward(sub2a_cmd_sink, sub2a_resp_stream).await }); - - let prod1b = mux1.add_producer().await; - let sub2b = mux2.add_subscriber().await; - let sub2b_cmd_sink = sender_sink(sub2b.cmd_tx.clone()); - let sub2b_resp_stream = ReceiverStream::new(sub2b.resp_rx); - tokio::spawn(async move { prod1b.forward(sub2b_cmd_sink, sub2b_resp_stream).await }); - - // Bridge: Mux2 -> Producer2 -> Subscriber3 -> Mux3 - let prod2 = mux2.add_producer().await; - let sub3 = mux3.add_subscriber().await; - let sub3_cmd_sink = sender_sink(sub3.cmd_tx.clone()); - let sub3_resp_stream = ReceiverStream::new(sub3.resp_rx); - tokio::spawn(async move { prod2.forward(sub3_cmd_sink, sub3_resp_stream).await }); - - // Deepest producers where we will capture commands and inject events - let p3a = mux3.add_producer().await; - let p3b = mux3.add_producer().await; - let mut p3a_cmd_rx = p3a.cmd_rx; - let p3a_resp_tx = p3a.resp_tx; - let mut p3b_cmd_rx = p3b.cmd_rx; - let p3b_resp_tx = p3b.resp_tx; - - // Three top-level subscribers on Mux1 - let mut sub1a = mux1.add_subscriber().await; - let mut sub1b = mux1.add_subscriber().await; - let mut sub1c = mux1.add_subscriber().await; - let id_a = "s1a"; - let id_b = "s1b"; - let id_c = "s1c"; - - // Send Add commands downstream from each subscriber - sub1a - .cmd_tx - .send(Ok(make_add_cmd(id_a))) - .await - .expect("send add a"); - sub1b - .cmd_tx - .send(Ok(make_add_cmd(id_b))) - .await - .expect("send add b"); - sub1c - .cmd_tx - .send(Ok(make_add_cmd(id_c))) - .await - .expect("send add c"); - - // Ensure deepest producers receive each Add exactly once and not on both - let mut assigned: HashMap = HashMap::new(); - for _ in 0..3 { - let (which, got_opt) = timeout(Duration::from_secs(2), async { - tokio::select! { - c = p3a_cmd_rx.recv() => (0usize, c), - c = p3b_cmd_rx.recv() => (1usize, c), - } - }) - .await - .expect("timeout waiting for downstream add"); - - let got = got_opt - .expect("p3 cmd channel closed") - .expect("downstream add error"); - - match got.version.and_then(|v| match v { - CmdVersion::V0(v0) => v0.command, - }) { - Some(Cmd::Add(a)) => { - let id = a.client_subscription_id; - if let Some(prev) = assigned.insert(id.clone(), which) { - panic!( - "subscription {} was dispatched to two producers: {} and {}", - id, prev, which - ); - } - } - _ => panic!("expected Add at deepest producer"), - } - } - assert!( - assigned.contains_key(id_a) - && assigned.contains_key(id_b) - && assigned.contains_key(id_c) - ); - - // Emit one event per subscription id via the assigned deepest producer - match assigned.get(id_a) { - Some(0) => p3a_resp_tx - .send(Ok(make_event_resp(id_a))) - .await - .expect("emit event a"), - Some(1) => p3b_resp_tx - .send(Ok(make_event_resp(id_a))) - .await - .expect("emit event a"), - _ => panic!("missing assignment for id_a"), - } - match assigned.get(id_b) { - Some(0) => p3a_resp_tx - .send(Ok(make_event_resp(id_b))) - .await - .expect("emit event b"), - Some(1) => p3b_resp_tx - .send(Ok(make_event_resp(id_b))) - .await - .expect("emit event b"), - _ => panic!("missing assignment for id_b"), - } - match assigned.get(id_c) { - Some(0) => p3a_resp_tx - .send(Ok(make_event_resp(id_c))) - .await - .expect("emit event c"), - Some(1) => p3b_resp_tx - .send(Ok(make_event_resp(id_c))) - .await - .expect("emit event c"), - _ => panic!("missing assignment for id_c"), - } - - // Receive each exactly once at the top-level subscribers - let a_first = timeout(Duration::from_secs(2), sub1a.resp_rx.recv()) - .await - .expect("timeout waiting for a event") - .expect("a subscriber closed") - .expect("a event error"); - let b_first = timeout(Duration::from_secs(2), sub1b.resp_rx.recv()) - .await - .expect("timeout waiting for b event") - .expect("b subscriber closed") - .expect("b event error"); - let c_first = timeout(Duration::from_secs(2), sub1c.resp_rx.recv()) - .await - .expect("timeout waiting for c event") - .expect("c subscriber closed") - .expect("c event error"); - - let get_id = |resp: PlatformEventsResponse| -> String { - match resp.version.and_then(|v| match v { - dapi_grpc::platform::v0::platform_events_response::Version::V0(v0) => { - v0.response.and_then(|r| match r { - Resp::Event(m) => Some(m.client_subscription_id), - _ => None, - }) - } - }) { - Some(id) => id, - None => panic!("unexpected response variant"), - } - }; - - assert_eq!(get_id(a_first.clone()), id_a); - assert_eq!(get_id(b_first.clone()), id_b); - assert_eq!(get_id(c_first.clone()), id_c); - - // Ensure no duplicates by timing out on the next recv - let a_dup = timeout(Duration::from_millis(200), sub1a.resp_rx.recv()).await; - assert!(a_dup.is_err(), "unexpected duplicate for subscriber a"); - let b_dup = timeout(Duration::from_millis(200), sub1b.resp_rx.recv()).await; - assert!(b_dup.is_err(), "unexpected duplicate for subscriber b"); - let c_dup = timeout(Duration::from_millis(200), sub1c.resp_rx.recv()).await; - assert!(c_dup.is_err(), "unexpected duplicate for subscriber c"); - } -} diff --git a/packages/rs-dash-event-bus/src/grpc_producer.rs b/packages/rs-dash-event-bus/src/grpc_producer.rs deleted file mode 100644 index 43259b38327..00000000000 --- a/packages/rs-dash-event-bus/src/grpc_producer.rs +++ /dev/null @@ -1,52 +0,0 @@ -use dapi_grpc::platform::v0::PlatformEventsCommand; -use dapi_grpc::platform::v0::platform_client::PlatformClient; -use dapi_grpc::tonic::Status; -use tokio::sync::mpsc; -use tokio::sync::oneshot; -use tokio_stream::wrappers::ReceiverStream; - -use crate::event_mux::{EventMux, result_sender_sink}; - -const UPSTREAM_COMMAND_BUFFER: usize = 128; - -/// A reusable gRPC producer that bridges a Platform gRPC client with an [`EventMux`]. -/// -/// Creates bi-directional channels, subscribes upstream using the provided client, -/// and forwards commands/responses between the upstream stream and the mux. -pub struct GrpcPlatformEventsProducer; - -impl GrpcPlatformEventsProducer { - /// Connect the provided `client` to the `mux` and forward messages until completion. - /// - /// The `ready` receiver is used to signal when the producer has started. - pub async fn run( - mux: EventMux, - mut client: PlatformClient, - ready: oneshot::Sender<()>, - ) -> Result<(), Status> - where - // C: DapiRequestExecutor, - C: dapi_grpc::tonic::client::GrpcService, - C::Error: Into, - C::ResponseBody: dapi_grpc::tonic::codegen::Body - + Send - + 'static, - ::Error: - Into + Send, - { - let (cmd_tx, cmd_rx) = mpsc::channel::(UPSTREAM_COMMAND_BUFFER); - tracing::debug!("connecting gRPC producer to upstream"); - let resp_stream = client - .subscribe_platform_events(ReceiverStream::new(cmd_rx)) - .await?; - let cmd_sink = result_sender_sink(cmd_tx); - let resp_rx = resp_stream.into_inner(); - - tracing::debug!("registering gRPC producer with mux"); - let producer = mux.add_producer().await; - tracing::debug!("gRPC producer connected to mux and ready, starting forward loop"); - ready.send(()).ok(); - producer.forward(cmd_sink, resp_rx).await; - Ok(()) - } -} diff --git a/packages/rs-dash-event-bus/src/lib.rs b/packages/rs-dash-event-bus/src/lib.rs index ce3a5de5744..cd0423765fb 100644 --- a/packages/rs-dash-event-bus/src/lib.rs +++ b/packages/rs-dash-event-bus/src/lib.rs @@ -1,17 +1,7 @@ -//! rs-dash-event-bus: shared event bus and Platform events multiplexer +//! rs-dash-event-bus: shared event bus utilities for Dash Platform components. //! //! - `event_bus`: generic in-process pub/sub with pluggable filtering -//! - `event_mux`: upstream bi-di gRPC multiplexer for Platform events pub mod event_bus; -pub mod event_mux; -pub mod grpc_producer; -pub mod local_bus_producer; pub use event_bus::{EventBus, Filter, SubscriptionHandle}; -pub use event_mux::{ - EventMux, EventProducer, EventSubscriber, PlatformEventsSubscriptionHandle, result_sender_sink, - sender_sink, -}; -pub use grpc_producer::GrpcPlatformEventsProducer; -pub use local_bus_producer::run_local_platform_events_producer; diff --git a/packages/rs-dash-event-bus/src/local_bus_producer.rs b/packages/rs-dash-event-bus/src/local_bus_producer.rs deleted file mode 100644 index 3ea358942ab..00000000000 --- a/packages/rs-dash-event-bus/src/local_bus_producer.rs +++ /dev/null @@ -1,181 +0,0 @@ -use crate::event_bus::{EventBus, SubscriptionHandle}; -use crate::event_mux::EventMux; -use dapi_grpc::platform::v0::platform_events_command::Version as CmdVersion; -use dapi_grpc::platform::v0::platform_events_command::platform_events_command_v0::Command as Cmd; -use dapi_grpc::platform::v0::platform_events_response::platform_events_response_v0::Response as Resp; -// already imported below -use dapi_grpc::platform::v0::platform_events_response::{ - PlatformEventsResponseV0, Version as RespVersion, -}; -// keep single RespVersion import -use dapi_grpc::platform::v0::{ - PlatformEventMessageV0, PlatformEventV0, PlatformEventsResponse, PlatformFilterV0, -}; -use std::collections::HashMap; -use std::fmt::Debug; -use std::sync::Arc; -use tokio::task::JoinHandle; - -/// Runs a local producer that bridges EventMux commands to a local EventBus of Platform events. -/// -/// - `mux`: the shared EventMux instance to attach as a producer -/// - `event_bus`: local bus emitting `PlatformEventV0` events -/// - `make_adapter`: function to convert incoming `PlatformFilterV0` into a bus filter type `F` -pub async fn run_local_platform_events_producer( - mux: EventMux, - event_bus: EventBus, - make_adapter: Arc F + Send + Sync>, -) where - F: crate::event_bus::Filter + Send + Sync + Debug + 'static, -{ - let producer = mux.add_producer().await; - let mut cmd_rx = producer.cmd_rx; - let resp_tx = producer.resp_tx; - - let mut subs: HashMap, JoinHandle<_>)> = - HashMap::new(); - - while let Some(cmd_res) = cmd_rx.recv().await { - match cmd_res { - Ok(cmd) => { - let v0 = match cmd.version { - Some(CmdVersion::V0(v0)) => v0, - None => { - let err = PlatformEventsResponse { - version: Some(RespVersion::V0(PlatformEventsResponseV0 { - response: Some(Resp::Error( - dapi_grpc::platform::v0::PlatformErrorV0 { - client_subscription_id: "".to_string(), - code: 400, - message: "missing version".to_string(), - }, - )), - })), - }; - if resp_tx.send(Ok(err)).await.is_err() { - tracing::warn!("local producer failed to send missing version error"); - } - continue; - } - }; - match v0.command { - Some(Cmd::Add(add)) => { - let id = add.client_subscription_id; - let adapter = (make_adapter)(add.filter.unwrap_or_default()); - let handle = event_bus.add_subscription(adapter).await; - - // Start forwarding events for this subscription - let id_for = id.clone(); - let handle_clone = handle.clone(); - let resp_tx_clone = resp_tx.clone(); - let worker = tokio::spawn(async move { - forward_local_events(handle_clone, &id_for, resp_tx_clone).await; - }); - - subs.insert(id.clone(), (handle, worker)); - - // Ack - let ack = PlatformEventsResponse { - version: Some(RespVersion::V0(PlatformEventsResponseV0 { - response: Some(Resp::Ack(dapi_grpc::platform::v0::AckV0 { - client_subscription_id: id, - op: "add".to_string(), - })), - })), - }; - if resp_tx.send(Ok(ack)).await.is_err() { - tracing::warn!("local producer failed to send add ack"); - } - } - Some(Cmd::Remove(rem)) => { - let id = rem.client_subscription_id; - if let Some((subscription, worker)) = subs.remove(&id) { - let ack = PlatformEventsResponse { - version: Some(RespVersion::V0(PlatformEventsResponseV0 { - response: Some(Resp::Ack(dapi_grpc::platform::v0::AckV0 { - client_subscription_id: id, - op: "remove".to_string(), - })), - })), - }; - if resp_tx.send(Ok(ack)).await.is_err() { - tracing::warn!("local producer failed to send remove ack"); - } - - // TODO: add subscription close method - drop(subscription); - worker.abort(); - } - } - Some(Cmd::Ping(p)) => { - let ack = PlatformEventsResponse { - version: Some(RespVersion::V0(PlatformEventsResponseV0 { - response: Some(Resp::Ack(dapi_grpc::platform::v0::AckV0 { - client_subscription_id: p.nonce.to_string(), - op: "ping".to_string(), - })), - })), - }; - if resp_tx.send(Ok(ack)).await.is_err() { - tracing::warn!("local producer failed to send ping ack"); - } - } - None => { - let err = PlatformEventsResponse { - version: Some(RespVersion::V0(PlatformEventsResponseV0 { - response: Some(Resp::Error( - dapi_grpc::platform::v0::PlatformErrorV0 { - client_subscription_id: "".to_string(), - code: 400, - message: "missing command".to_string(), - }, - )), - })), - }; - if resp_tx.send(Ok(err)).await.is_err() { - tracing::warn!("local producer failed to send missing command error"); - } - } - } - } - Err(e) => { - tracing::warn!("local producer received error command: {}", e); - let err = PlatformEventsResponse { - version: Some(RespVersion::V0(PlatformEventsResponseV0 { - response: Some(Resp::Error(dapi_grpc::platform::v0::PlatformErrorV0 { - client_subscription_id: "".to_string(), - code: 500, - message: format!("{}", e), - })), - })), - }; - if resp_tx.send(Ok(err)).await.is_err() { - tracing::warn!("local producer failed to send upstream error"); - } - } - } - } -} - -async fn forward_local_events( - subscription: SubscriptionHandle, - client_subscription_id: &str, - forward_tx: crate::event_mux::ResponseSender, -) where - F: crate::event_bus::Filter + Send + Sync + 'static, -{ - while let Some(evt) = subscription.recv().await { - let resp = PlatformEventsResponse { - version: Some(RespVersion::V0(PlatformEventsResponseV0 { - response: Some(Resp::Event(PlatformEventMessageV0 { - client_subscription_id: client_subscription_id.to_string(), - event: Some(evt), - })), - })), - }; - if forward_tx.send(Ok(resp)).await.is_err() { - tracing::warn!("client disconnected, stopping local event forwarding"); - break; - } - } -} diff --git a/packages/rs-drive-abci/src/query/service.rs b/packages/rs-drive-abci/src/query/service.rs index 3efe5fd3dbf..1e782b051bc 100644 --- a/packages/rs-drive-abci/src/query/service.rs +++ b/packages/rs-drive-abci/src/query/service.rs @@ -47,13 +47,11 @@ use dapi_grpc::platform::v0::{ GetTokenPreProgrammedDistributionsResponse, GetTokenStatusesRequest, GetTokenStatusesResponse, GetTokenTotalSupplyRequest, GetTokenTotalSupplyResponse, GetTotalCreditsInPlatformRequest, GetTotalCreditsInPlatformResponse, GetVotePollsByEndDateRequest, GetVotePollsByEndDateResponse, - PlatformEventV0 as PlatformEvent, PlatformEventsCommand, PlatformEventsResponse, + PlatformEventV0 as PlatformEvent, PlatformSubscriptionRequest, PlatformSubscriptionResponse, WaitForStateTransitionResultRequest, WaitForStateTransitionResultResponse, }; -use dapi_grpc::tonic::Streaming; use dapi_grpc::tonic::{Code, Request, Response, Status}; use dash_event_bus::event_bus::{EventBus, Filter as EventBusFilter}; -use dash_event_bus::{sender_sink, EventMux}; use dpp::version::PlatformVersion; use std::fmt::Debug; use std::sync::atomic::Ordering; @@ -69,9 +67,7 @@ const PLATFORM_EVENTS_STREAM_BUFFER: usize = 128; /// Service to handle platform queries pub struct QueryService { platform: Arc>, - _event_bus: EventBus, - /// Multiplexer for Platform events - platform_events_mux: EventMux, + event_bus: EventBus, /// background worker tasks workers: Arc>>, } @@ -89,25 +85,10 @@ impl QueryService { platform: Arc>, event_bus: EventBus, ) -> Self { - let mux = EventMux::new(); - let mut workers = tokio::task::JoinSet::new(); - - // Start local mux producer to bridge internal event_bus - { - let bus = event_bus.clone(); - let worker_mux = mux.clone(); - workers.spawn(async move { - use std::sync::Arc; - let mk = Arc::new(|f| PlatformFilterAdapter::new(f)); - dash_event_bus::run_local_platform_events_producer(worker_mux, bus, mk).await; - }); - } - Self { platform, - _event_bus: event_bus, - platform_events_mux: mux, - workers: Arc::new(Mutex::new(workers)), + event_bus, + workers: Arc::new(Mutex::new(tokio::task::JoinSet::new())), } } @@ -879,26 +860,69 @@ impl PlatformService for QueryService { .await } - type subscribePlatformEventsStream = ReceiverStream>; + type SubscribePlatformEventsStream = + ReceiverStream>; - /// Uses EventMux: forward inbound commands to mux subscriber and return its response stream async fn subscribe_platform_events( &self, - request: Request>, - ) -> Result, Status> { - // TODO: two issues are to be resolved: - // 1) restart of client with the same subscription id shows that old subscription is not removed - // 2) connection drops after some time - // return Err(Status::unimplemented("the endpoint is not supported yet")); - let inbound = request.into_inner(); - let (downstream_tx, rx) = - mpsc::channel::>(PLATFORM_EVENTS_STREAM_BUFFER); - let subscriber = self.platform_events_mux.add_subscriber().await; + request: Request, + ) -> Result, Status> { + use dapi_grpc::platform::v0::platform_Subscription_request::Version as RequestVersion; + use dapi_grpc::platform::v0::platform_Subscription_response::{ + PlatformSubscriptionResponseV0, Version as ResponseVersion, + }; + + let request = request.into_inner(); + let req_v0 = match request.version { + Some(RequestVersion::V0(v0)) => v0, + _ => { + tracing::warn!("subscribe_platform_events: unsupported request version"); + return Err(Status::invalid_argument("unsupported request version")); + } + }; + + if req_v0.client_subscription_id.is_empty() { + tracing::debug!("subscribe_platform_events: missing client_subscription_id"); + return Err(Status::invalid_argument( + "client_subscription_id is required", + )); + } + + let filter = req_v0.filter.unwrap_or_default(); + let subscription_id = req_v0.client_subscription_id.clone(); + + let subscription = self + .event_bus + .add_subscription(PlatformFilterAdapter::new(filter)) + .await; + + let (downstream_tx, rx) = mpsc::channel::>( + PLATFORM_EVENTS_STREAM_BUFFER, + ); let mut workers = self.workers.lock().unwrap(); workers.spawn(async move { - let resp_sink = sender_sink(downstream_tx); - subscriber.forward(inbound, resp_sink).await; + let handle = subscription; + while let Some(event) = handle.recv().await { + let response = PlatformSubscriptionResponse { + version: Some(ResponseVersion::V0(PlatformSubscriptionResponseV0 { + client_subscription_id: subscription_id.clone(), + event: Some(event), + })), + }; + + if downstream_tx.send(Ok(response)).await.is_err() { + tracing::debug!( + subscription_id = %subscription_id, + "subscribe_platform_events: client stream closed" + ); + break; + } + } + tracing::debug!( + subscription_id = %subscription_id, + "subscribe_platform_events: event stream completed" + ); }); Ok(Response::new(ReceiverStream::new(rx))) diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index d8540d69447..73c2ef8ed91 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -13,7 +13,6 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ ] } dapi-grpc = { path = "../dapi-grpc", default-features = false } rs-dapi-client = { path = "../rs-dapi-client", default-features = false } -rs-dash-event-bus = { path = "../rs-dash-event-bus", optional = true } drive = { path = "../rs-drive", default-features = false, features = [ "verify", ] } @@ -35,7 +34,6 @@ serde = { version = "1.0.219", default-features = false, features = [ serde_json = { version = "1.0", features = ["preserve_order"], optional = true } tracing = { version = "0.1.41" } hex = { version = "0.4.3" } -once_cell = { version = "1.19", optional = true } dotenvy = { version = "0.15.7", optional = true } envy = { version = "0.4.2", optional = true } futures = { version = "0.3.30" } @@ -101,7 +99,7 @@ mocks = [ "zeroize/serde", ] -subscriptions = ["dep:rs-dash-event-bus", "dep:once_cell"] +subscriptions = [] # Run integration tests using test vectors from `tests/vectors/` instead of connecting to live Dash Platform. # diff --git a/packages/rs-sdk/examples/platform_events.rs b/packages/rs-sdk/examples/platform_events.rs index 5bd43ba0555..fdd43fd8821 100644 --- a/packages/rs-sdk/examples/platform_events.rs +++ b/packages/rs-sdk/examples/platform_events.rs @@ -10,19 +10,20 @@ fn main() { #[cfg(feature = "subscriptions")] mod subscribe { + use dapi_grpc::platform::v0::platform_Subscription_response::Version as ResponseVersion; + use dapi_grpc::platform::v0::platform_event_v0::Event as PlatformEvent; use dapi_grpc::platform::v0::platform_filter_v0::Kind as FilterKind; - use dapi_grpc::platform::v0::PlatformFilterV0; use dapi_grpc::platform::v0::{ - platform_events_response::platform_events_response_v0::Response as Resp, - PlatformEventsResponse, + PlatformFilterV0, PlatformSubscriptionResponse, StateTransitionResultFilter, }; - use dash_event_bus::SubscriptionHandle; use dash_sdk::platform::fetch_current_no_parameters::FetchCurrent; use dash_sdk::platform::types::epoch::Epoch; use dash_sdk::{Sdk, SdkBuilder}; + use futures::StreamExt; use rs_dapi_client::{Address, AddressList}; use serde::Deserialize; use std::str::FromStr; + use tonic::Streaming; use zeroize::Zeroizing; #[derive(Debug, Deserialize)] @@ -77,7 +78,7 @@ mod subscribe { let filter_block = PlatformFilterV0 { kind: Some(FilterKind::BlockCommitted(true)), }; - let (block_id, block_handle) = sdk + let (block_id, block_stream) = sdk .subscribe_platform_events(filter_block) .await .expect("subscribe block_committed"); @@ -89,12 +90,12 @@ mod subscribe { .and_then(|s| hex::decode(s).ok()); let filter_str = PlatformFilterV0 { kind: Some(FilterKind::StateTransitionResult( - dapi_grpc::platform::v0::StateTransitionResultFilter { + StateTransitionResultFilter { tx_hash: tx_hash_bytes, }, )), }; - let (str_id, str_handle) = sdk + let (str_id, str_stream) = sdk .subscribe_platform_events(filter_str) .await .expect("subscribe state_transition_result"); @@ -103,20 +104,21 @@ mod subscribe { let filter_all = PlatformFilterV0 { kind: Some(FilterKind::All(true)), }; - let (all_id, all_handle) = sdk + let (all_id, all_stream) = sdk .subscribe_platform_events(filter_all) .await .expect("subscribe all"); - println!( - "Subscribed: BlockCommitted id={}, STR id={}, All id={}", - block_id, str_id, all_id - ); + println!("Subscribed: BlockCommitted id={block_id}, STR id={str_id}, All id={all_id}"); println!("Waiting for events... (Ctrl+C to exit)"); - let block_worker = tokio::spawn(worker(block_handle)); - let str_worker = tokio::spawn(worker(str_handle)); - let all_worker = tokio::spawn(worker(all_handle)); + let block_worker = + tokio::spawn(worker(block_stream, format!("BlockCommitted ({block_id})"))); + let str_worker = tokio::spawn(worker( + str_stream, + format!("StateTransitionResult ({str_id})"), + )); + let all_worker = tokio::spawn(worker(all_stream, format!("All ({all_id})"))); // Handle Ctrl+C to remove subscriptions and exit let abort_block = block_worker.abort_handle(); @@ -134,62 +136,48 @@ mod subscribe { let _ = tokio::join!(block_worker, str_worker, all_worker); } - async fn worker(handle: SubscriptionHandle) - where - F: Send + Sync + 'static, - { - while let Some(resp) = handle.recv().await { - // Parse and print - if let Some(dapi_grpc::platform::v0::platform_events_response::Version::V0(v0)) = - resp.version - { - match v0.response { - Some(Resp::Event(ev)) => { - let sub_id = ev.client_subscription_id; - use dapi_grpc::platform::v0::platform_event_v0::Event as E; - if let Some(event_v0) = ev.event { + async fn worker(mut stream: Streaming, label: String) { + while let Some(message) = stream.next().await { + match message { + Ok(response) => { + if let Some(ResponseVersion::V0(v0)) = response.version { + let sub_id = v0.client_subscription_id; + if let Some(event_v0) = v0.event { if let Some(event) = event_v0.event { match event { - E::BlockCommitted(bc) => { + PlatformEvent::BlockCommitted(bc) => { if let Some(meta) = bc.meta { println!( - "{} BlockCommitted: height={} time_ms={} tx_count={} block_id_hash=0x{}", - sub_id, - meta.height, - meta.time_ms, - bc.tx_count, - hex::encode(meta.block_id_hash) - ); + "{label}: id={sub_id} height={} time_ms={} tx_count={} block_id_hash=0x{}", + meta.height, + meta.time_ms, + bc.tx_count, + hex::encode(meta.block_id_hash) + ); } } - E::StateTransitionFinalized(r) => { + PlatformEvent::StateTransitionFinalized(r) => { if let Some(meta) = r.meta { println!( - "{} StateTransitionFinalized: height={} tx_hash=0x{} block_id_hash=0x{}", - sub_id, - meta.height, - hex::encode(r.tx_hash), - hex::encode(meta.block_id_hash) - ); + "{label}: id={sub_id} height={} tx_hash=0x{} block_id_hash=0x{}", + meta.height, + hex::encode(r.tx_hash), + hex::encode(meta.block_id_hash) + ); } } } } } } - Some(Resp::Ack(ack)) => { - println!("Ack: {} op={}", ack.client_subscription_id, ack.op); - } - Some(Resp::Error(err)) => { - eprintln!( - "Error: {} code={} msg={}", - err.client_subscription_id, err.code, err.message - ); - } - None => {} + } + Err(status) => { + eprintln!("{label}: stream error {status}"); + break; } } } + println!("{label}: stream closed"); } fn setup_sdk(config: &Config) -> Sdk { diff --git a/packages/rs-sdk/src/platform/events.rs b/packages/rs-sdk/src/platform/events.rs index c748bfae747..869bb194679 100644 --- a/packages/rs-sdk/src/platform/events.rs +++ b/packages/rs-sdk/src/platform/events.rs @@ -1,31 +1,80 @@ use dapi_grpc::platform::v0::platform_client::PlatformClient; -use dapi_grpc::platform::v0::PlatformFilterV0; -use dash_event_bus::GrpcPlatformEventsProducer; -use dash_event_bus::{EventMux, PlatformEventsSubscriptionHandle}; +use dapi_grpc::platform::v0::platform_subscription_request::{ + PlatformSubscriptionRequestV0, Version as RequestVersion, +}; +use dapi_grpc::platform::v0::{ + PlatformFilterV0, PlatformSubscriptionRequest, PlatformSubscriptionResponse, +}; +use dapi_grpc::tonic::{Request, Streaming}; use rs_dapi_client::transport::{create_channel, PlatformGrpcClient}; use rs_dapi_client::{RequestSettings, Uri}; -use std::time::Duration; -use tokio::time::timeout; +use std::fmt::{Debug, Display}; +use std::sync::atomic::{AtomicU64, Ordering}; +use std::sync::LazyLock; +use std::time::{Duration, SystemTime, UNIX_EPOCH}; -impl crate::Sdk { - pub(crate) async fn get_event_mux(&self) -> Result { - use once_cell::sync::OnceCell; - static MUX: OnceCell = OnceCell::new(); +/// ID generator with most siginificant bits based on local process info. +static NEXT_SUBSCRIPTION_ID: LazyLock = LazyLock::new(|| { + let secs = SystemTime::now() + .duration_since(UNIX_EPOCH) + .unwrap() + .as_secs(); + let pid = std::process::id() as u64; + + // 48..63 bits: pid + // 32..47 bits: process start time in seconds (lower 16 bits) + // 0..31 bits: for a counter + AtomicU64::new(((pid & 0xFFFF) << 48) | (secs & 0xFFFF) << 32) +}); - if let Some(mux) = MUX.get() { - return Ok(mux.clone()); - } +#[derive(Default, Copy, Clone, Eq, PartialEq, Hash)] +pub struct EventSubscriptionId(pub u64); +impl EventSubscriptionId { + pub fn new() -> Self { + Self(NEXT_SUBSCRIPTION_ID.fetch_add(1, Ordering::Relaxed)) + } +} - let mux = EventMux::new(); +impl Display for EventSubscriptionId { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + // Write in format: 16 hex digits for time, 8 hex digits for pid, 8 hex digits for counter + write!( + f, + "{:016x}:{:08x}:{:08x}", + self.0 >> 64, + (self.0 >> 32) & 0xffffffff, + self.0 & 0xffffffff + ) + } +} + +impl Debug for EventSubscriptionId { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + Display::fmt(self, f) + } +} + +impl crate::Sdk { + /// Subscribe to Platform events using the gRPC streaming API. + /// + /// Returns the generated client subscription id alongside the streaming response. + pub async fn subscribe_platform_events( + &self, + filter: PlatformFilterV0, + ) -> Result<(EventSubscriptionId, Streaming), crate::Error> { + let subscription_id = EventSubscriptionId::new(); - // Build a gRPC client to a live address let address = self .address_list() .get_live_address() .ok_or_else(|| crate::Error::SubscriptionError("no live DAPI address".to_string()))?; let uri: Uri = address.uri().clone(); - tracing::debug!(address = ?uri, "creating gRPC client for platform events"); + tracing::debug!( + address = ?uri, + %subscription_id, + "creating gRPC client for platform events subscription" + ); let settings = self .dapi_client_settings .override_by(RequestSettings { @@ -36,47 +85,21 @@ impl crate::Sdk { .finalize(); let channel = create_channel(uri, Some(&settings)) .map_err(|e| crate::Error::SubscriptionError(format!("channel: {e}")))?; - let client: PlatformGrpcClient = PlatformClient::new(channel); + let mut client: PlatformGrpcClient = PlatformClient::new(channel); - // Spawn the producer bridge - let worker_mux = mux.clone(); - tracing::debug!("spawning platform events producer task"); - let (ready_tx, ready_rx) = tokio::sync::oneshot::channel(); - self.spawn(async move { - let inner_mux = worker_mux.clone(); - tracing::debug!("starting platform events producer task GrpcPlatformEventsProducer"); - if let Err(e) = GrpcPlatformEventsProducer::run(inner_mux, client, ready_tx).await { - tracing::error!("platform events producer terminated: {}", e); - } - }) - .await; - // wait until the producer is ready, with a timeout - if timeout(Duration::from_secs(5), ready_rx).await.is_err() { - tracing::error!("timed out waiting for platform events producer to be ready"); - return Err(crate::Error::SubscriptionError( - "timeout waiting for platform events producer to be ready".to_string(), - )); - } - - let _ = MUX.set(mux.clone()); - - Ok(mux) - } + let request = PlatformSubscriptionRequest { + version: Some(RequestVersion::V0(PlatformSubscriptionRequestV0 { + client_subscription_id: subscription_id.to_string(), + filter: Some(filter), + })), + }; - /// Subscribe to Platform events and receive a raw EventBus handle. The - /// upstream subscription is removed automatically (RAII) when the last - /// clone of the handle is dropped. - pub async fn subscribe_platform_events( - &self, - filter: PlatformFilterV0, - ) -> Result<(String, PlatformEventsSubscriptionHandle), crate::Error> { - // Initialize global mux with a single upstream producer on first use - let mux = self.get_event_mux().await?; - - let (id, handle) = mux - .subscribe(filter) + let response = client + .subscribe_platform_events(Request::new(request)) .await - .map_err(|e| crate::Error::SubscriptionError(format!("subscribe: {}", e)))?; - Ok((id, handle)) + .map_err(|e| crate::Error::SubscriptionError(format!("subscribe: {}", e)))? + .into_inner(); + + Ok((subscription_id, response)) } } diff --git a/packages/rs-sdk/tests/fetch/platform_events.rs b/packages/rs-sdk/tests/fetch/platform_events.rs index 8d4d253fdc2..5c3aacc53c7 100644 --- a/packages/rs-sdk/tests/fetch/platform_events.rs +++ b/packages/rs-sdk/tests/fetch/platform_events.rs @@ -1,18 +1,17 @@ use super::{common::setup_logs, config::Config}; use dapi_grpc::platform::v0::platform_client::PlatformClient; -use dapi_grpc::platform::v0::platform_events_command::platform_events_command_v0::Command as Cmd; -use dapi_grpc::platform::v0::platform_events_command::Version as CmdVersion; -use dapi_grpc::platform::v0::platform_events_response::platform_events_response_v0::Response as Resp; -use dapi_grpc::platform::v0::platform_events_response::Version as RespVersion; -use dapi_grpc::platform::v0::{AddSubscriptionV0, PingV0, PlatformEventsCommand, PlatformFilterV0}; -use dash_event_bus::{EventMux, GrpcPlatformEventsProducer}; +use dapi_grpc::platform::v0::platform_subscription_request::{ + PlatformSubscriptionRequestV0, Version as RequestVersion, +}; +use dapi_grpc::platform::v0::{PlatformFilterV0, PlatformSubscriptionRequest}; +use dapi_grpc::tonic::Request; use rs_dapi_client::transport::create_channel; use rs_dapi_client::{RequestSettings, Uri}; use tokio::time::{timeout, Duration}; #[tokio::test(flavor = "multi_thread", worker_threads = 1)] #[cfg(all(feature = "network-testing", not(feature = "offline-testing")))] -async fn test_platform_events_ping() { +async fn test_platform_events_subscribe_stream_opens() { setup_logs(); // Build gRPC client from test config @@ -29,82 +28,27 @@ async fn test_platform_events_ping() { } .finalize(); let channel = create_channel(uri, Some(&settings)).expect("create channel"); - let client = PlatformClient::new(channel); - - // Wire EventMux with a gRPC producer - let mux = EventMux::new(); - let (ready_tx, ready_rx) = tokio::sync::oneshot::channel(); - let mux_worker = mux.clone(); - tokio::spawn(async move { - let _ = GrpcPlatformEventsProducer::run(mux_worker, client, ready_tx).await; - }); - // Wait until producer is ready - timeout(Duration::from_secs(5), ready_rx) - .await - .expect("producer ready timeout") - .expect("producer start"); - - // Create a raw subscriber on the mux to send commands and receive responses - let sub = mux.add_subscriber().await; - let cmd_tx = sub.cmd_tx; - let mut resp_rx = sub.resp_rx; - - // Choose a numeric ID for our subscription and ping - let id_num: u64 = 4242; - let id_str = id_num.to_string(); - - // Send Add with our chosen client_subscription_id - let add_cmd = PlatformEventsCommand { - version: Some(CmdVersion::V0( - dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0 { - command: Some(Cmd::Add(AddSubscriptionV0 { - client_subscription_id: id_str.clone(), - filter: Some(PlatformFilterV0::default()), - })), - }, - )), + let mut client = PlatformClient::new(channel); + + let request = PlatformSubscriptionRequest { + version: Some(RequestVersion::V0(PlatformSubscriptionRequestV0 { + client_subscription_id: "test-subscription".to_string(), + filter: Some(PlatformFilterV0 { + kind: Some(dapi_grpc::platform::v0::platform_filter_v0::Kind::All(true)), + }), + })), }; - cmd_tx.send(Ok(add_cmd)).expect("send add"); - // Expect Add ack - let add_ack = timeout(Duration::from_secs(3), resp_rx.recv()) + let mut stream = client + .subscribe_platform_events(Request::new(request)) .await - .expect("timeout waiting add ack") - .expect("subscriber closed") - .expect("ack error"); - match add_ack.version.and_then(|v| match v { - RespVersion::V0(v0) => v0.response, - }) { - Some(Resp::Ack(a)) => { - assert_eq!(a.client_subscription_id, id_str); - assert_eq!(a.op, "add"); - } - other => panic!("expected add ack, got: {:?}", other.map(|_| ())), - } - - // Send Ping with matching nonce so that ack routes to our subscription - let ping_cmd = PlatformEventsCommand { - version: Some(CmdVersion::V0( - dapi_grpc::platform::v0::platform_events_command::PlatformEventsCommandV0 { - command: Some(Cmd::Ping(PingV0 { nonce: id_num })), - }, - )), - }; - cmd_tx.send(Ok(ping_cmd)).expect("send ping"); - - // Expect Ping ack routed through Mux to our subscriber - let ping_ack = timeout(Duration::from_secs(3), resp_rx.recv()) - .await - .expect("timeout waiting ping ack") - .expect("subscriber closed") - .expect("ack error"); - match ping_ack.version.and_then(|v| match v { - RespVersion::V0(v0) => v0.response, - }) { - Some(Resp::Ack(a)) => { - assert_eq!(a.client_subscription_id, id_str); - assert_eq!(a.op, "ping"); - } - other => panic!("expected ping ack, got: {:?}", other.map(|_| ())), - } + .expect("subscribe") + .into_inner(); + + // Ensure the stream stays open (no immediate error) by expecting a timeout when waiting for the first message. + let wait_result = timeout(Duration::from_millis(250), stream.message()).await; + assert!( + wait_result.is_err(), + "expected to time out waiting for initial platform event" + ); } From 1b82c1b67d47c0d04064eb32fc6395769a90acca Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Tue, 21 Oct 2025 16:09:33 +0200 Subject: [PATCH 12/40] chore: fix build --- packages/rs-drive-abci/src/query/service.rs | 4 ++-- packages/rs-sdk/examples/platform_events.rs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/rs-drive-abci/src/query/service.rs b/packages/rs-drive-abci/src/query/service.rs index 1e782b051bc..22b9574d542 100644 --- a/packages/rs-drive-abci/src/query/service.rs +++ b/packages/rs-drive-abci/src/query/service.rs @@ -867,8 +867,8 @@ impl PlatformService for QueryService { &self, request: Request, ) -> Result, Status> { - use dapi_grpc::platform::v0::platform_Subscription_request::Version as RequestVersion; - use dapi_grpc::platform::v0::platform_Subscription_response::{ + use dapi_grpc::platform::v0::platform_subscription_request::Version as RequestVersion; + use dapi_grpc::platform::v0::platform_subscription_response::{ PlatformSubscriptionResponseV0, Version as ResponseVersion, }; diff --git a/packages/rs-sdk/examples/platform_events.rs b/packages/rs-sdk/examples/platform_events.rs index fdd43fd8821..d208ae2c8ed 100644 --- a/packages/rs-sdk/examples/platform_events.rs +++ b/packages/rs-sdk/examples/platform_events.rs @@ -10,12 +10,13 @@ fn main() { #[cfg(feature = "subscriptions")] mod subscribe { - use dapi_grpc::platform::v0::platform_Subscription_response::Version as ResponseVersion; use dapi_grpc::platform::v0::platform_event_v0::Event as PlatformEvent; use dapi_grpc::platform::v0::platform_filter_v0::Kind as FilterKind; + use dapi_grpc::platform::v0::platform_subscription_response::Version as ResponseVersion; use dapi_grpc::platform::v0::{ PlatformFilterV0, PlatformSubscriptionResponse, StateTransitionResultFilter, }; + use dapi_grpc::tonic::Streaming; use dash_sdk::platform::fetch_current_no_parameters::FetchCurrent; use dash_sdk::platform::types::epoch::Epoch; use dash_sdk::{Sdk, SdkBuilder}; @@ -23,7 +24,6 @@ mod subscribe { use rs_dapi_client::{Address, AddressList}; use serde::Deserialize; use std::str::FromStr; - use tonic::Streaming; use zeroize::Zeroizing; #[derive(Debug, Deserialize)] From c1b30bd1bffd579931ad0b597f499798a085236d Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Tue, 21 Oct 2025 16:24:55 +0200 Subject: [PATCH 13/40] chore: fmt --- packages/rs-dapi/src/main.rs | 7 +++---- .../platform_service/wait_for_state_transition_result.rs | 5 ++--- packages/rs-dapi/src/services/streaming_service/bloom.rs | 5 ++--- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/packages/rs-dapi/src/main.rs b/packages/rs-dapi/src/main.rs index 7508eddb897..f6ae4e2d550 100644 --- a/packages/rs-dapi/src/main.rs +++ b/packages/rs-dapi/src/main.rs @@ -111,7 +111,7 @@ impl Cli { "rs-dapi server initializing", ); - let mut server_future = run_server(config, access_logger); + let server_future = run_server(config, access_logger); tokio::pin!(server_future); let outcome = tokio::select! { @@ -130,8 +130,8 @@ impl Cli { } }; - if let Some(result) = outcome { - if let Err(e) = result { + if let Some(result) = outcome + && let Err(e) = result { error!("Server error: {}", e); // Check if this is a connection-related error and set appropriate exit code @@ -161,7 +161,6 @@ impl Cli { } } } - } Ok(()) } Commands::Config => dump_config(&config), diff --git a/packages/rs-dapi/src/services/platform_service/wait_for_state_transition_result.rs b/packages/rs-dapi/src/services/platform_service/wait_for_state_transition_result.rs index 3b1ff1437d3..48a814a4874 100644 --- a/packages/rs-dapi/src/services/platform_service/wait_for_state_transition_result.rs +++ b/packages/rs-dapi/src/services/platform_service/wait_for_state_transition_result.rs @@ -161,8 +161,8 @@ impl PlatformServiceImpl { } // No error; generate proof if requested - if prove && !tx_response.tx.is_empty() { - if let Ok(tx_data) = + if prove && !tx_response.tx.is_empty() + && let Ok(tx_data) = base64::prelude::Engine::decode(&base64::prelude::BASE64_STANDARD, &tx_response.tx) { match self.fetch_proof_for_state_transition(tx_data).await { @@ -178,7 +178,6 @@ impl PlatformServiceImpl { } } } - } let body = WaitForStateTransitionResultResponse { version: Some(wait_for_state_transition_result_response::Version::V0( diff --git a/packages/rs-dapi/src/services/streaming_service/bloom.rs b/packages/rs-dapi/src/services/streaming_service/bloom.rs index f71ca8a1971..2915799ab75 100644 --- a/packages/rs-dapi/src/services/streaming_service/bloom.rs +++ b/packages/rs-dapi/src/services/streaming_service/bloom.rs @@ -11,11 +11,10 @@ fn script_matches(filter: &CoreBloomFilter, script: &ScriptBuf) -> bool { return true; } - if let Some(pubkey_hash) = extract_pubkey_hash(script.as_script()) { - if filter.contains(&pubkey_hash) { + if let Some(pubkey_hash) = extract_pubkey_hash(script.as_script()) + && filter.contains(&pubkey_hash) { return true; } - } extract_pushdatas(script_bytes) .into_iter() From 1d7ca2e1b9871cd250210e4c48007f3e85dfd5c4 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Tue, 21 Oct 2025 16:53:33 +0200 Subject: [PATCH 14/40] chore: fix sdk --- packages/rs-sdk/src/platform/events.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/rs-sdk/src/platform/events.rs b/packages/rs-sdk/src/platform/events.rs index 869bb194679..739d34d4117 100644 --- a/packages/rs-sdk/src/platform/events.rs +++ b/packages/rs-sdk/src/platform/events.rs @@ -21,8 +21,8 @@ static NEXT_SUBSCRIPTION_ID: LazyLock = LazyLock::new(|| { .as_secs(); let pid = std::process::id() as u64; - // 48..63 bits: pid - // 32..47 bits: process start time in seconds (lower 16 bits) + // 48..63 bits: lower 16 bits of pid + // 32..47 bits: lower 16 bits ofprocess start time in seconds // 0..31 bits: for a counter AtomicU64::new(((pid & 0xFFFF) << 48) | (secs & 0xFFFF) << 32) }); @@ -37,13 +37,13 @@ impl EventSubscriptionId { impl Display for EventSubscriptionId { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - // Write in format: 16 hex digits for time, 8 hex digits for pid, 8 hex digits for counter + // Write in format: timepid:counter write!( f, - "{:016x}:{:08x}:{:08x}", - self.0 >> 64, - (self.0 >> 32) & 0xffffffff, - self.0 & 0xffffffff + "{:04X}_{:04X}:{}", + (self.0 >> 48) & 0xffff, + (self.0 >> 32) & 0xffff, + self.0 & 0xffff_ffff ) } } From 2d66a4c7fc3eb2d4829929e55618231d9686f936 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Thu, 23 Oct 2025 16:34:26 +0200 Subject: [PATCH 15/40] chore: rabbit review and other small stuff --- .../protos/platform/v0/platform.proto | 3 +- .../templates/platform/gateway/envoy.yaml.dot | 8 +- packages/rs-drive-abci/src/query/service.rs | 56 ++++++++++---- packages/rs-sdk/examples/platform_events.rs | 26 +++---- packages/rs-sdk/src/platform/events.rs | 76 ++++++------------- .../rs-sdk/tests/fetch/platform_events.rs | 30 +++++++- 6 files changed, 111 insertions(+), 88 deletions(-) diff --git a/packages/dapi-grpc/protos/platform/v0/platform.proto b/packages/dapi-grpc/protos/platform/v0/platform.proto index e0bdee1ecf1..1af5a7f65e1 100644 --- a/packages/dapi-grpc/protos/platform/v0/platform.proto +++ b/packages/dapi-grpc/protos/platform/v0/platform.proto @@ -9,8 +9,7 @@ import "google/protobuf/timestamp.proto"; // Platform events subscription (v0) message PlatformSubscriptionRequest { message PlatformSubscriptionRequestV0 { - string client_subscription_id = 1; - PlatformFilterV0 filter = 2; + PlatformFilterV0 filter = 1; } oneof version { PlatformSubscriptionRequestV0 v0 = 1; } } diff --git a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot index e9ceb7953ec..d9ed94f3265 100644 --- a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot +++ b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot @@ -218,16 +218,16 @@ timeout: 15s # rs-dapi subscribePlatformEvents endpoint with bigger timeout (now exposed directly) - match: - path: "/org.dash.platform.dapi.v0.Platform/subscribePlatformEvents" + path: "/org.dash.platform.dapi.v0.Platform/SubscribePlatformEvents" route: cluster: rs_dapi - idle_timeout: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} + idle_timeout: 300s # Upstream response timeout timeout: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} max_stream_duration: # Entire stream/request timeout - max_stream_duration: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} - grpc_timeout_header_max: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} + max_stream_duration: 3605s + grpc_timeout_header_max: 3600s # rs-dapi waitForStateTransitionResult endpoint with bigger timeout (now exposed directly) - match: path: "/org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult" diff --git a/packages/rs-drive-abci/src/query/service.rs b/packages/rs-drive-abci/src/query/service.rs index 22b9574d542..bf48b552cd9 100644 --- a/packages/rs-drive-abci/src/query/service.rs +++ b/packages/rs-drive-abci/src/query/service.rs @@ -54,7 +54,7 @@ use dapi_grpc::tonic::{Code, Request, Response, Status}; use dash_event_bus::event_bus::{EventBus, Filter as EventBusFilter}; use dpp::version::PlatformVersion; use std::fmt::Debug; -use std::sync::atomic::Ordering; +use std::sync::atomic::{AtomicU64, Ordering}; use std::sync::{Arc, Mutex}; use std::thread::sleep; use std::time::Duration; @@ -69,7 +69,16 @@ pub struct QueryService { platform: Arc>, event_bus: EventBus, /// background worker tasks - workers: Arc>>, + workers: Mutex>>, +} + +impl Drop for QueryService { + fn drop(&mut self) { + let mut workers = self.workers.lock().unwrap(); + for handle in workers.drain(..) { + handle.abort(); + } + } } type QueryMethod = fn( @@ -88,7 +97,7 @@ impl QueryService { Self { platform, event_bus, - workers: Arc::new(Mutex::new(tokio::task::JoinSet::new())), + workers: Mutex::new(Vec::new()), } } @@ -881,15 +890,16 @@ impl PlatformService for QueryService { } }; - if req_v0.client_subscription_id.is_empty() { - tracing::debug!("subscribe_platform_events: missing client_subscription_id"); - return Err(Status::invalid_argument( - "client_subscription_id is required", - )); - } - let filter = req_v0.filter.unwrap_or_default(); - let subscription_id = req_v0.client_subscription_id.clone(); + if filter.kind.is_none() { + tracing::warn!("subscribe_platform_events: filter kind is not specified"); + return Err(Status::invalid_argument("filter kind is not specified")); + } + let subscription_id = format!("{:X}", rand::random::()); + tracing::trace!( + subscription_id = %subscription_id, + "subscribe_platform_events: generated subscription id" + ); let subscription = self .event_bus @@ -900,8 +910,27 @@ impl PlatformService for QueryService { PLATFORM_EVENTS_STREAM_BUFFER, ); - let mut workers = self.workers.lock().unwrap(); - workers.spawn(async move { + let handshake_tx = downstream_tx.clone(); + { + let subscription_id = subscription_id.clone(); + let handshake = PlatformSubscriptionResponse { + version: Some(ResponseVersion::V0(PlatformSubscriptionResponseV0 { + client_subscription_id: subscription_id.clone(), + event: None, + })), + }; + + if let Err(err) = handshake_tx.send(Ok(handshake)).await { + tracing::debug!( + subscription_id = %subscription_id, + error = %err, + "subscribe_platform_events: client disconnected before handshake" + ); + return Err(Status::cancelled("client disconnected before handshake")); + } + } + + let worker = tokio::task::spawn(async move { let handle = subscription; while let Some(event) = handle.recv().await { let response = PlatformSubscriptionResponse { @@ -924,6 +953,7 @@ impl PlatformService for QueryService { "subscribe_platform_events: event stream completed" ); }); + self.workers.lock().unwrap().push(worker); Ok(Response::new(ReceiverStream::new(rx))) } diff --git a/packages/rs-sdk/examples/platform_events.rs b/packages/rs-sdk/examples/platform_events.rs index d208ae2c8ed..c364c6f8e25 100644 --- a/packages/rs-sdk/examples/platform_events.rs +++ b/packages/rs-sdk/examples/platform_events.rs @@ -24,6 +24,7 @@ mod subscribe { use rs_dapi_client::{Address, AddressList}; use serde::Deserialize; use std::str::FromStr; + use tracing_subscriber::EnvFilter; use zeroize::Zeroizing; #[derive(Debug, Deserialize)] @@ -66,7 +67,9 @@ mod subscribe { #[tokio::main(flavor = "multi_thread", worker_threads = 2)] pub(super) async fn main() { - tracing_subscriber::fmt::init(); + tracing_subscriber::fmt() + .with_env_filter(EnvFilter::try_from_default_env().unwrap_or(EnvFilter::new("info"))) + .init(); let config = Config::load(); let sdk = setup_sdk(&config); @@ -78,7 +81,7 @@ mod subscribe { let filter_block = PlatformFilterV0 { kind: Some(FilterKind::BlockCommitted(true)), }; - let (block_id, block_stream) = sdk + let block_stream = sdk .subscribe_platform_events(filter_block) .await .expect("subscribe block_committed"); @@ -95,7 +98,7 @@ mod subscribe { }, )), }; - let (str_id, str_stream) = sdk + let str_stream = sdk .subscribe_platform_events(filter_str) .await .expect("subscribe state_transition_result"); @@ -104,21 +107,16 @@ mod subscribe { let filter_all = PlatformFilterV0 { kind: Some(FilterKind::All(true)), }; - let (all_id, all_stream) = sdk + let all_stream = sdk .subscribe_platform_events(filter_all) .await .expect("subscribe all"); - println!("Subscribed: BlockCommitted id={block_id}, STR id={str_id}, All id={all_id}"); - println!("Waiting for events... (Ctrl+C to exit)"); + println!("Subscriptions created. Waiting for events... (Ctrl+C to exit)"); - let block_worker = - tokio::spawn(worker(block_stream, format!("BlockCommitted ({block_id})"))); - let str_worker = tokio::spawn(worker( - str_stream, - format!("StateTransitionResult ({str_id})"), - )); - let all_worker = tokio::spawn(worker(all_stream, format!("All ({all_id})"))); + let block_worker = tokio::spawn(worker(block_stream, "BlockCommitted")); + let str_worker = tokio::spawn(worker(str_stream, "StateTransitionResult")); + let all_worker = tokio::spawn(worker(all_stream, "AllEvents")); // Handle Ctrl+C to remove subscriptions and exit let abort_block = block_worker.abort_handle(); @@ -136,7 +134,7 @@ mod subscribe { let _ = tokio::join!(block_worker, str_worker, all_worker); } - async fn worker(mut stream: Streaming, label: String) { + async fn worker(mut stream: Streaming, label: &str) { while let Some(message) = stream.next().await { match message { Ok(response) => { diff --git a/packages/rs-sdk/src/platform/events.rs b/packages/rs-sdk/src/platform/events.rs index 739d34d4117..9a927297a25 100644 --- a/packages/rs-sdk/src/platform/events.rs +++ b/packages/rs-sdk/src/platform/events.rs @@ -2,68 +2,23 @@ use dapi_grpc::platform::v0::platform_client::PlatformClient; use dapi_grpc::platform::v0::platform_subscription_request::{ PlatformSubscriptionRequestV0, Version as RequestVersion, }; +use dapi_grpc::platform::v0::platform_subscription_response::Version as ResponseVersion; use dapi_grpc::platform::v0::{ PlatformFilterV0, PlatformSubscriptionRequest, PlatformSubscriptionResponse, }; use dapi_grpc::tonic::{Request, Streaming}; use rs_dapi_client::transport::{create_channel, PlatformGrpcClient}; use rs_dapi_client::{RequestSettings, Uri}; -use std::fmt::{Debug, Display}; -use std::sync::atomic::{AtomicU64, Ordering}; -use std::sync::LazyLock; -use std::time::{Duration, SystemTime, UNIX_EPOCH}; - -/// ID generator with most siginificant bits based on local process info. -static NEXT_SUBSCRIPTION_ID: LazyLock = LazyLock::new(|| { - let secs = SystemTime::now() - .duration_since(UNIX_EPOCH) - .unwrap() - .as_secs(); - let pid = std::process::id() as u64; - - // 48..63 bits: lower 16 bits of pid - // 32..47 bits: lower 16 bits ofprocess start time in seconds - // 0..31 bits: for a counter - AtomicU64::new(((pid & 0xFFFF) << 48) | (secs & 0xFFFF) << 32) -}); - -#[derive(Default, Copy, Clone, Eq, PartialEq, Hash)] -pub struct EventSubscriptionId(pub u64); -impl EventSubscriptionId { - pub fn new() -> Self { - Self(NEXT_SUBSCRIPTION_ID.fetch_add(1, Ordering::Relaxed)) - } -} - -impl Display for EventSubscriptionId { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - // Write in format: timepid:counter - write!( - f, - "{:04X}_{:04X}:{}", - (self.0 >> 48) & 0xffff, - (self.0 >> 32) & 0xffff, - self.0 & 0xffff_ffff - ) - } -} - -impl Debug for EventSubscriptionId { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - Display::fmt(self, f) - } -} - +use std::time::Duration; +pub type EventSubscriptionId = String; impl crate::Sdk { /// Subscribe to Platform events using the gRPC streaming API. /// - /// Returns the generated client subscription id alongside the streaming response. + /// Returns the server-assigned subscription id alongside the streaming response. pub async fn subscribe_platform_events( &self, filter: PlatformFilterV0, - ) -> Result<(EventSubscriptionId, Streaming), crate::Error> { - let subscription_id = EventSubscriptionId::new(); - + ) -> Result, crate::Error> { let address = self .address_list() .get_live_address() @@ -72,7 +27,6 @@ impl crate::Sdk { tracing::debug!( address = ?uri, - %subscription_id, "creating gRPC client for platform events subscription" ); let settings = self @@ -89,7 +43,6 @@ impl crate::Sdk { let request = PlatformSubscriptionRequest { version: Some(RequestVersion::V0(PlatformSubscriptionRequestV0 { - client_subscription_id: subscription_id.to_string(), filter: Some(filter), })), }; @@ -100,6 +53,23 @@ impl crate::Sdk { .map_err(|e| crate::Error::SubscriptionError(format!("subscribe: {}", e)))? .into_inner(); - Ok((subscription_id, response)) + Ok(response) + } +} + +/// Trait for managing subscriptions. +pub trait Subscription { + /// Get the subscription id associated with this response. + /// + /// Returns an empty string if no subscription id is available. + fn subscription_id(&self) -> EventSubscriptionId; +} + +impl Subscription for PlatformSubscriptionResponse { + fn subscription_id(&self) -> EventSubscriptionId { + match &self.version { + Some(ResponseVersion::V0(v0)) => v0.client_subscription_id.clone(), + _ => "".to_string(), + } } } diff --git a/packages/rs-sdk/tests/fetch/platform_events.rs b/packages/rs-sdk/tests/fetch/platform_events.rs index 5c3aacc53c7..bb06f201909 100644 --- a/packages/rs-sdk/tests/fetch/platform_events.rs +++ b/packages/rs-sdk/tests/fetch/platform_events.rs @@ -3,6 +3,7 @@ use dapi_grpc::platform::v0::platform_client::PlatformClient; use dapi_grpc::platform::v0::platform_subscription_request::{ PlatformSubscriptionRequestV0, Version as RequestVersion, }; +use dapi_grpc::platform::v0::platform_subscription_response::Version as ResponseVersion; use dapi_grpc::platform::v0::{PlatformFilterV0, PlatformSubscriptionRequest}; use dapi_grpc::tonic::Request; use rs_dapi_client::transport::create_channel; @@ -32,7 +33,6 @@ async fn test_platform_events_subscribe_stream_opens() { let request = PlatformSubscriptionRequest { version: Some(RequestVersion::V0(PlatformSubscriptionRequestV0 { - client_subscription_id: "test-subscription".to_string(), filter: Some(PlatformFilterV0 { kind: Some(dapi_grpc::platform::v0::platform_filter_v0::Kind::All(true)), }), @@ -45,7 +45,33 @@ async fn test_platform_events_subscribe_stream_opens() { .expect("subscribe") .into_inner(); - // Ensure the stream stays open (no immediate error) by expecting a timeout when waiting for the first message. + let handshake = timeout(Duration::from_secs(1), stream.message()) + .await + .expect("handshake should arrive promptly") + .expect("handshake message") + .expect("handshake payload"); + + if let Some(ResponseVersion::V0(v0)) = handshake.version { + assert!( + !v0.client_subscription_id.is_empty(), + "handshake must include subscription id" + ); + assert!( + v0.client_subscription_id + .parse::() + .map(|id| id > 0) + .unwrap_or(false), + "handshake subscription id must be a positive integer" + ); + assert!( + v0.event.is_none(), + "handshake should not include an event payload" + ); + } else { + panic!("unexpected handshake response version"); + } + + // Ensure the stream stays open (no immediate event) by expecting a timeout when waiting for the next message. let wait_result = timeout(Duration::from_millis(250), stream.message()).await; assert!( wait_result.is_err(), From 9122a5807e2a4df66f73fe853d276b60d7e1d306 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Thu, 23 Oct 2025 16:34:41 +0200 Subject: [PATCH 16/40] chore: update grpc clients --- .../clients/drive/v0/nodejs/drive_pbjs.js | 2278 +++++++++++++++++ .../dash/platform/dapi/v0/PlatformGrpc.java | 76 + .../platform/v0/nodejs/platform_pbjs.js | 2278 +++++++++++++++++ .../platform/v0/nodejs/platform_protoc.js | 2182 ++++++++++++++++ .../platform/v0/objective-c/Platform.pbobjc.h | 234 +- .../platform/v0/objective-c/Platform.pbobjc.m | 599 +++++ .../platform/v0/objective-c/Platform.pbrpc.h | 26 + .../platform/v0/objective-c/Platform.pbrpc.m | 33 + .../platform/v0/python/platform_pb2.py | 1784 ++++++++----- .../platform/v0/python/platform_pb2_grpc.py | 34 + .../clients/platform/v0/web/platform_pb.d.ts | 289 +++ .../clients/platform/v0/web/platform_pb.js | 2182 ++++++++++++++++ .../platform/v0/web/platform_pb_service.d.ts | 11 + .../platform/v0/web/platform_pb_service.js | 48 + 14 files changed, 11422 insertions(+), 632 deletions(-) diff --git a/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js b/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js index 12f26c56d90..e6dca9b7e5d 100644 --- a/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js +++ b/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js @@ -562,6 +562,2251 @@ $root.org = (function() { */ var v0 = {}; + v0.PlatformSubscriptionRequest = (function() { + + /** + * Properties of a PlatformSubscriptionRequest. + * @memberof org.dash.platform.dapi.v0 + * @interface IPlatformSubscriptionRequest + * @property {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.IPlatformSubscriptionRequestV0|null} [v0] PlatformSubscriptionRequest v0 + */ + + /** + * Constructs a new PlatformSubscriptionRequest. + * @memberof org.dash.platform.dapi.v0 + * @classdesc Represents a PlatformSubscriptionRequest. + * @implements IPlatformSubscriptionRequest + * @constructor + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest=} [properties] Properties to set + */ + function PlatformSubscriptionRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlatformSubscriptionRequest v0. + * @member {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.IPlatformSubscriptionRequestV0|null|undefined} v0 + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @instance + */ + PlatformSubscriptionRequest.prototype.v0 = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * PlatformSubscriptionRequest version. + * @member {"v0"|undefined} version + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @instance + */ + Object.defineProperty(PlatformSubscriptionRequest.prototype, "version", { + get: $util.oneOfGetter($oneOfFields = ["v0"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new PlatformSubscriptionRequest instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest} PlatformSubscriptionRequest instance + */ + PlatformSubscriptionRequest.create = function create(properties) { + return new PlatformSubscriptionRequest(properties); + }; + + /** + * Encodes the specified PlatformSubscriptionRequest message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionRequest.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest} message PlatformSubscriptionRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.v0 != null && Object.hasOwnProperty.call(message, "v0")) + $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.encode(message.v0, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlatformSubscriptionRequest message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest} message PlatformSubscriptionRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlatformSubscriptionRequest message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest} PlatformSubscriptionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.v0 = $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlatformSubscriptionRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest} PlatformSubscriptionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlatformSubscriptionRequest message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlatformSubscriptionRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.v0 != null && message.hasOwnProperty("v0")) { + properties.version = 1; + { + var error = $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.verify(message.v0); + if (error) + return "v0." + error; + } + } + return null; + }; + + /** + * Creates a PlatformSubscriptionRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest} PlatformSubscriptionRequest + */ + PlatformSubscriptionRequest.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest(); + if (object.v0 != null) { + if (typeof object.v0 !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformSubscriptionRequest.v0: object expected"); + message.v0 = $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.fromObject(object.v0); + } + return message; + }; + + /** + * Creates a plain object from a PlatformSubscriptionRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionRequest} message PlatformSubscriptionRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlatformSubscriptionRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.v0 != null && message.hasOwnProperty("v0")) { + object.v0 = $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.toObject(message.v0, options); + if (options.oneofs) + object.version = "v0"; + } + return object; + }; + + /** + * Converts this PlatformSubscriptionRequest to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @instance + * @returns {Object.} JSON object + */ + PlatformSubscriptionRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 = (function() { + + /** + * Properties of a PlatformSubscriptionRequestV0. + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @interface IPlatformSubscriptionRequestV0 + * @property {org.dash.platform.dapi.v0.IPlatformFilterV0|null} [filter] PlatformSubscriptionRequestV0 filter + */ + + /** + * Constructs a new PlatformSubscriptionRequestV0. + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @classdesc Represents a PlatformSubscriptionRequestV0. + * @implements IPlatformSubscriptionRequestV0 + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.IPlatformSubscriptionRequestV0=} [properties] Properties to set + */ + function PlatformSubscriptionRequestV0(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlatformSubscriptionRequestV0 filter. + * @member {org.dash.platform.dapi.v0.IPlatformFilterV0|null|undefined} filter + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @instance + */ + PlatformSubscriptionRequestV0.prototype.filter = null; + + /** + * Creates a new PlatformSubscriptionRequestV0 instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.IPlatformSubscriptionRequestV0=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} PlatformSubscriptionRequestV0 instance + */ + PlatformSubscriptionRequestV0.create = function create(properties) { + return new PlatformSubscriptionRequestV0(properties); + }; + + /** + * Encodes the specified PlatformSubscriptionRequestV0 message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.IPlatformSubscriptionRequestV0} message PlatformSubscriptionRequestV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionRequestV0.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) + $root.org.dash.platform.dapi.v0.PlatformFilterV0.encode(message.filter, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlatformSubscriptionRequestV0 message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.IPlatformSubscriptionRequestV0} message PlatformSubscriptionRequestV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionRequestV0.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlatformSubscriptionRequestV0 message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} PlatformSubscriptionRequestV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionRequestV0.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.filter = $root.org.dash.platform.dapi.v0.PlatformFilterV0.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlatformSubscriptionRequestV0 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} PlatformSubscriptionRequestV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionRequestV0.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlatformSubscriptionRequestV0 message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlatformSubscriptionRequestV0.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.filter != null && message.hasOwnProperty("filter")) { + var error = $root.org.dash.platform.dapi.v0.PlatformFilterV0.verify(message.filter); + if (error) + return "filter." + error; + } + return null; + }; + + /** + * Creates a PlatformSubscriptionRequestV0 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} PlatformSubscriptionRequestV0 + */ + PlatformSubscriptionRequestV0.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0(); + if (object.filter != null) { + if (typeof object.filter !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.filter: object expected"); + message.filter = $root.org.dash.platform.dapi.v0.PlatformFilterV0.fromObject(object.filter); + } + return message; + }; + + /** + * Creates a plain object from a PlatformSubscriptionRequestV0 message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} message PlatformSubscriptionRequestV0 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlatformSubscriptionRequestV0.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.filter = null; + if (message.filter != null && message.hasOwnProperty("filter")) + object.filter = $root.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(message.filter, options); + return object; + }; + + /** + * Converts this PlatformSubscriptionRequestV0 to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @instance + * @returns {Object.} JSON object + */ + PlatformSubscriptionRequestV0.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PlatformSubscriptionRequestV0; + })(); + + return PlatformSubscriptionRequest; + })(); + + v0.PlatformSubscriptionResponse = (function() { + + /** + * Properties of a PlatformSubscriptionResponse. + * @memberof org.dash.platform.dapi.v0 + * @interface IPlatformSubscriptionResponse + * @property {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.IPlatformSubscriptionResponseV0|null} [v0] PlatformSubscriptionResponse v0 + */ + + /** + * Constructs a new PlatformSubscriptionResponse. + * @memberof org.dash.platform.dapi.v0 + * @classdesc Represents a PlatformSubscriptionResponse. + * @implements IPlatformSubscriptionResponse + * @constructor + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionResponse=} [properties] Properties to set + */ + function PlatformSubscriptionResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlatformSubscriptionResponse v0. + * @member {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.IPlatformSubscriptionResponseV0|null|undefined} v0 + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @instance + */ + PlatformSubscriptionResponse.prototype.v0 = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * PlatformSubscriptionResponse version. + * @member {"v0"|undefined} version + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @instance + */ + Object.defineProperty(PlatformSubscriptionResponse.prototype, "version", { + get: $util.oneOfGetter($oneOfFields = ["v0"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new PlatformSubscriptionResponse instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionResponse=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} PlatformSubscriptionResponse instance + */ + PlatformSubscriptionResponse.create = function create(properties) { + return new PlatformSubscriptionResponse(properties); + }; + + /** + * Encodes the specified PlatformSubscriptionResponse message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionResponse.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionResponse} message PlatformSubscriptionResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.v0 != null && Object.hasOwnProperty.call(message, "v0")) + $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.encode(message.v0, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlatformSubscriptionResponse message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionResponse} message PlatformSubscriptionResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlatformSubscriptionResponse message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} PlatformSubscriptionResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.v0 = $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlatformSubscriptionResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} PlatformSubscriptionResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlatformSubscriptionResponse message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlatformSubscriptionResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.v0 != null && message.hasOwnProperty("v0")) { + properties.version = 1; + { + var error = $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.verify(message.v0); + if (error) + return "v0." + error; + } + } + return null; + }; + + /** + * Creates a PlatformSubscriptionResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} PlatformSubscriptionResponse + */ + PlatformSubscriptionResponse.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse(); + if (object.v0 != null) { + if (typeof object.v0 !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformSubscriptionResponse.v0: object expected"); + message.v0 = $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.fromObject(object.v0); + } + return message; + }; + + /** + * Creates a plain object from a PlatformSubscriptionResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} message PlatformSubscriptionResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlatformSubscriptionResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.v0 != null && message.hasOwnProperty("v0")) { + object.v0 = $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.toObject(message.v0, options); + if (options.oneofs) + object.version = "v0"; + } + return object; + }; + + /** + * Converts this PlatformSubscriptionResponse to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @instance + * @returns {Object.} JSON object + */ + PlatformSubscriptionResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 = (function() { + + /** + * Properties of a PlatformSubscriptionResponseV0. + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @interface IPlatformSubscriptionResponseV0 + * @property {string|null} [clientSubscriptionId] PlatformSubscriptionResponseV0 clientSubscriptionId + * @property {org.dash.platform.dapi.v0.IPlatformEventV0|null} [event] PlatformSubscriptionResponseV0 event + */ + + /** + * Constructs a new PlatformSubscriptionResponseV0. + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @classdesc Represents a PlatformSubscriptionResponseV0. + * @implements IPlatformSubscriptionResponseV0 + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.IPlatformSubscriptionResponseV0=} [properties] Properties to set + */ + function PlatformSubscriptionResponseV0(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlatformSubscriptionResponseV0 clientSubscriptionId. + * @member {string} clientSubscriptionId + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @instance + */ + PlatformSubscriptionResponseV0.prototype.clientSubscriptionId = ""; + + /** + * PlatformSubscriptionResponseV0 event. + * @member {org.dash.platform.dapi.v0.IPlatformEventV0|null|undefined} event + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @instance + */ + PlatformSubscriptionResponseV0.prototype.event = null; + + /** + * Creates a new PlatformSubscriptionResponseV0 instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.IPlatformSubscriptionResponseV0=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} PlatformSubscriptionResponseV0 instance + */ + PlatformSubscriptionResponseV0.create = function create(properties) { + return new PlatformSubscriptionResponseV0(properties); + }; + + /** + * Encodes the specified PlatformSubscriptionResponseV0 message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.IPlatformSubscriptionResponseV0} message PlatformSubscriptionResponseV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionResponseV0.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientSubscriptionId != null && Object.hasOwnProperty.call(message, "clientSubscriptionId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientSubscriptionId); + if (message.event != null && Object.hasOwnProperty.call(message, "event")) + $root.org.dash.platform.dapi.v0.PlatformEventV0.encode(message.event, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlatformSubscriptionResponseV0 message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.IPlatformSubscriptionResponseV0} message PlatformSubscriptionResponseV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionResponseV0.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlatformSubscriptionResponseV0 message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} PlatformSubscriptionResponseV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionResponseV0.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.clientSubscriptionId = reader.string(); + break; + case 2: + message.event = $root.org.dash.platform.dapi.v0.PlatformEventV0.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlatformSubscriptionResponseV0 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} PlatformSubscriptionResponseV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionResponseV0.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlatformSubscriptionResponseV0 message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlatformSubscriptionResponseV0.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientSubscriptionId != null && message.hasOwnProperty("clientSubscriptionId")) + if (!$util.isString(message.clientSubscriptionId)) + return "clientSubscriptionId: string expected"; + if (message.event != null && message.hasOwnProperty("event")) { + var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.verify(message.event); + if (error) + return "event." + error; + } + return null; + }; + + /** + * Creates a PlatformSubscriptionResponseV0 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} PlatformSubscriptionResponseV0 + */ + PlatformSubscriptionResponseV0.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0(); + if (object.clientSubscriptionId != null) + message.clientSubscriptionId = String(object.clientSubscriptionId); + if (object.event != null) { + if (typeof object.event !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.event: object expected"); + message.event = $root.org.dash.platform.dapi.v0.PlatformEventV0.fromObject(object.event); + } + return message; + }; + + /** + * Creates a plain object from a PlatformSubscriptionResponseV0 message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} message PlatformSubscriptionResponseV0 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlatformSubscriptionResponseV0.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.clientSubscriptionId = ""; + object.event = null; + } + if (message.clientSubscriptionId != null && message.hasOwnProperty("clientSubscriptionId")) + object.clientSubscriptionId = message.clientSubscriptionId; + if (message.event != null && message.hasOwnProperty("event")) + object.event = $root.org.dash.platform.dapi.v0.PlatformEventV0.toObject(message.event, options); + return object; + }; + + /** + * Converts this PlatformSubscriptionResponseV0 to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @instance + * @returns {Object.} JSON object + */ + PlatformSubscriptionResponseV0.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PlatformSubscriptionResponseV0; + })(); + + return PlatformSubscriptionResponse; + })(); + + v0.StateTransitionResultFilter = (function() { + + /** + * Properties of a StateTransitionResultFilter. + * @memberof org.dash.platform.dapi.v0 + * @interface IStateTransitionResultFilter + * @property {Uint8Array|null} [txHash] StateTransitionResultFilter txHash + */ + + /** + * Constructs a new StateTransitionResultFilter. + * @memberof org.dash.platform.dapi.v0 + * @classdesc Represents a StateTransitionResultFilter. + * @implements IStateTransitionResultFilter + * @constructor + * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter=} [properties] Properties to set + */ + function StateTransitionResultFilter(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * StateTransitionResultFilter txHash. + * @member {Uint8Array} txHash + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @instance + */ + StateTransitionResultFilter.prototype.txHash = $util.newBuffer([]); + + /** + * Creates a new StateTransitionResultFilter instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter instance + */ + StateTransitionResultFilter.create = function create(properties) { + return new StateTransitionResultFilter(properties); + }; + + /** + * Encodes the specified StateTransitionResultFilter message. Does not implicitly {@link org.dash.platform.dapi.v0.StateTransitionResultFilter.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter} message StateTransitionResultFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StateTransitionResultFilter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.txHash != null && Object.hasOwnProperty.call(message, "txHash")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.txHash); + return writer; + }; + + /** + * Encodes the specified StateTransitionResultFilter message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.StateTransitionResultFilter.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter} message StateTransitionResultFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StateTransitionResultFilter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a StateTransitionResultFilter message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StateTransitionResultFilter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.StateTransitionResultFilter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.txHash = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a StateTransitionResultFilter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StateTransitionResultFilter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a StateTransitionResultFilter message. + * @function verify + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + StateTransitionResultFilter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.txHash != null && message.hasOwnProperty("txHash")) + if (!(message.txHash && typeof message.txHash.length === "number" || $util.isString(message.txHash))) + return "txHash: buffer expected"; + return null; + }; + + /** + * Creates a StateTransitionResultFilter message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter + */ + StateTransitionResultFilter.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.StateTransitionResultFilter) + return object; + var message = new $root.org.dash.platform.dapi.v0.StateTransitionResultFilter(); + if (object.txHash != null) + if (typeof object.txHash === "string") + $util.base64.decode(object.txHash, message.txHash = $util.newBuffer($util.base64.length(object.txHash)), 0); + else if (object.txHash.length >= 0) + message.txHash = object.txHash; + return message; + }; + + /** + * Creates a plain object from a StateTransitionResultFilter message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.StateTransitionResultFilter} message StateTransitionResultFilter + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + StateTransitionResultFilter.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if (options.bytes === String) + object.txHash = ""; + else { + object.txHash = []; + if (options.bytes !== Array) + object.txHash = $util.newBuffer(object.txHash); + } + if (message.txHash != null && message.hasOwnProperty("txHash")) + object.txHash = options.bytes === String ? $util.base64.encode(message.txHash, 0, message.txHash.length) : options.bytes === Array ? Array.prototype.slice.call(message.txHash) : message.txHash; + return object; + }; + + /** + * Converts this StateTransitionResultFilter to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @instance + * @returns {Object.} JSON object + */ + StateTransitionResultFilter.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return StateTransitionResultFilter; + })(); + + v0.PlatformFilterV0 = (function() { + + /** + * Properties of a PlatformFilterV0. + * @memberof org.dash.platform.dapi.v0 + * @interface IPlatformFilterV0 + * @property {boolean|null} [all] PlatformFilterV0 all + * @property {boolean|null} [blockCommitted] PlatformFilterV0 blockCommitted + * @property {org.dash.platform.dapi.v0.IStateTransitionResultFilter|null} [stateTransitionResult] PlatformFilterV0 stateTransitionResult + */ + + /** + * Constructs a new PlatformFilterV0. + * @memberof org.dash.platform.dapi.v0 + * @classdesc Represents a PlatformFilterV0. + * @implements IPlatformFilterV0 + * @constructor + * @param {org.dash.platform.dapi.v0.IPlatformFilterV0=} [properties] Properties to set + */ + function PlatformFilterV0(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlatformFilterV0 all. + * @member {boolean} all + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @instance + */ + PlatformFilterV0.prototype.all = false; + + /** + * PlatformFilterV0 blockCommitted. + * @member {boolean} blockCommitted + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @instance + */ + PlatformFilterV0.prototype.blockCommitted = false; + + /** + * PlatformFilterV0 stateTransitionResult. + * @member {org.dash.platform.dapi.v0.IStateTransitionResultFilter|null|undefined} stateTransitionResult + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @instance + */ + PlatformFilterV0.prototype.stateTransitionResult = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * PlatformFilterV0 kind. + * @member {"all"|"blockCommitted"|"stateTransitionResult"|undefined} kind + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @instance + */ + Object.defineProperty(PlatformFilterV0.prototype, "kind", { + get: $util.oneOfGetter($oneOfFields = ["all", "blockCommitted", "stateTransitionResult"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new PlatformFilterV0 instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {org.dash.platform.dapi.v0.IPlatformFilterV0=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0} PlatformFilterV0 instance + */ + PlatformFilterV0.create = function create(properties) { + return new PlatformFilterV0(properties); + }; + + /** + * Encodes the specified PlatformFilterV0 message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {org.dash.platform.dapi.v0.IPlatformFilterV0} message PlatformFilterV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformFilterV0.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.all != null && Object.hasOwnProperty.call(message, "all")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.all); + if (message.blockCommitted != null && Object.hasOwnProperty.call(message, "blockCommitted")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.blockCommitted); + if (message.stateTransitionResult != null && Object.hasOwnProperty.call(message, "stateTransitionResult")) + $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.encode(message.stateTransitionResult, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlatformFilterV0 message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {org.dash.platform.dapi.v0.IPlatformFilterV0} message PlatformFilterV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformFilterV0.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlatformFilterV0 message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0} PlatformFilterV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformFilterV0.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.all = reader.bool(); + break; + case 2: + message.blockCommitted = reader.bool(); + break; + case 3: + message.stateTransitionResult = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlatformFilterV0 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0} PlatformFilterV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformFilterV0.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlatformFilterV0 message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlatformFilterV0.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.all != null && message.hasOwnProperty("all")) { + properties.kind = 1; + if (typeof message.all !== "boolean") + return "all: boolean expected"; + } + if (message.blockCommitted != null && message.hasOwnProperty("blockCommitted")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + if (typeof message.blockCommitted !== "boolean") + return "blockCommitted: boolean expected"; + } + if (message.stateTransitionResult != null && message.hasOwnProperty("stateTransitionResult")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + { + var error = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.verify(message.stateTransitionResult); + if (error) + return "stateTransitionResult." + error; + } + } + return null; + }; + + /** + * Creates a PlatformFilterV0 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0} PlatformFilterV0 + */ + PlatformFilterV0.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformFilterV0) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0(); + if (object.all != null) + message.all = Boolean(object.all); + if (object.blockCommitted != null) + message.blockCommitted = Boolean(object.blockCommitted); + if (object.stateTransitionResult != null) { + if (typeof object.stateTransitionResult !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformFilterV0.stateTransitionResult: object expected"); + message.stateTransitionResult = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.fromObject(object.stateTransitionResult); + } + return message; + }; + + /** + * Creates a plain object from a PlatformFilterV0 message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0} message PlatformFilterV0 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlatformFilterV0.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.all != null && message.hasOwnProperty("all")) { + object.all = message.all; + if (options.oneofs) + object.kind = "all"; + } + if (message.blockCommitted != null && message.hasOwnProperty("blockCommitted")) { + object.blockCommitted = message.blockCommitted; + if (options.oneofs) + object.kind = "blockCommitted"; + } + if (message.stateTransitionResult != null && message.hasOwnProperty("stateTransitionResult")) { + object.stateTransitionResult = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject(message.stateTransitionResult, options); + if (options.oneofs) + object.kind = "stateTransitionResult"; + } + return object; + }; + + /** + * Converts this PlatformFilterV0 to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @instance + * @returns {Object.} JSON object + */ + PlatformFilterV0.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PlatformFilterV0; + })(); + + v0.PlatformEventV0 = (function() { + + /** + * Properties of a PlatformEventV0. + * @memberof org.dash.platform.dapi.v0 + * @interface IPlatformEventV0 + * @property {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted|null} [blockCommitted] PlatformEventV0 blockCommitted + * @property {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized|null} [stateTransitionFinalized] PlatformEventV0 stateTransitionFinalized + */ + + /** + * Constructs a new PlatformEventV0. + * @memberof org.dash.platform.dapi.v0 + * @classdesc Represents a PlatformEventV0. + * @implements IPlatformEventV0 + * @constructor + * @param {org.dash.platform.dapi.v0.IPlatformEventV0=} [properties] Properties to set + */ + function PlatformEventV0(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlatformEventV0 blockCommitted. + * @member {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted|null|undefined} blockCommitted + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @instance + */ + PlatformEventV0.prototype.blockCommitted = null; + + /** + * PlatformEventV0 stateTransitionFinalized. + * @member {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized|null|undefined} stateTransitionFinalized + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @instance + */ + PlatformEventV0.prototype.stateTransitionFinalized = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * PlatformEventV0 event. + * @member {"blockCommitted"|"stateTransitionFinalized"|undefined} event + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @instance + */ + Object.defineProperty(PlatformEventV0.prototype, "event", { + get: $util.oneOfGetter($oneOfFields = ["blockCommitted", "stateTransitionFinalized"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new PlatformEventV0 instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {org.dash.platform.dapi.v0.IPlatformEventV0=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformEventV0} PlatformEventV0 instance + */ + PlatformEventV0.create = function create(properties) { + return new PlatformEventV0(properties); + }; + + /** + * Encodes the specified PlatformEventV0 message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {org.dash.platform.dapi.v0.IPlatformEventV0} message PlatformEventV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformEventV0.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.blockCommitted != null && Object.hasOwnProperty.call(message, "blockCommitted")) + $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.encode(message.blockCommitted, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.stateTransitionFinalized != null && Object.hasOwnProperty.call(message, "stateTransitionFinalized")) + $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.encode(message.stateTransitionFinalized, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlatformEventV0 message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {org.dash.platform.dapi.v0.IPlatformEventV0} message PlatformEventV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformEventV0.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlatformEventV0 message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformEventV0} PlatformEventV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformEventV0.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformEventV0(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.blockCommitted = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.decode(reader, reader.uint32()); + break; + case 2: + message.stateTransitionFinalized = $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlatformEventV0 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformEventV0} PlatformEventV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformEventV0.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlatformEventV0 message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlatformEventV0.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.blockCommitted != null && message.hasOwnProperty("blockCommitted")) { + properties.event = 1; + { + var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.verify(message.blockCommitted); + if (error) + return "blockCommitted." + error; + } + } + if (message.stateTransitionFinalized != null && message.hasOwnProperty("stateTransitionFinalized")) { + if (properties.event === 1) + return "event: multiple values"; + properties.event = 1; + { + var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.verify(message.stateTransitionFinalized); + if (error) + return "stateTransitionFinalized." + error; + } + } + return null; + }; + + /** + * Creates a PlatformEventV0 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformEventV0} PlatformEventV0 + */ + PlatformEventV0.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformEventV0) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformEventV0(); + if (object.blockCommitted != null) { + if (typeof object.blockCommitted !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformEventV0.blockCommitted: object expected"); + message.blockCommitted = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.fromObject(object.blockCommitted); + } + if (object.stateTransitionFinalized != null) { + if (typeof object.stateTransitionFinalized !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformEventV0.stateTransitionFinalized: object expected"); + message.stateTransitionFinalized = $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.fromObject(object.stateTransitionFinalized); + } + return message; + }; + + /** + * Creates a plain object from a PlatformEventV0 message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0} message PlatformEventV0 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlatformEventV0.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.blockCommitted != null && message.hasOwnProperty("blockCommitted")) { + object.blockCommitted = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.toObject(message.blockCommitted, options); + if (options.oneofs) + object.event = "blockCommitted"; + } + if (message.stateTransitionFinalized != null && message.hasOwnProperty("stateTransitionFinalized")) { + object.stateTransitionFinalized = $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.toObject(message.stateTransitionFinalized, options); + if (options.oneofs) + object.event = "stateTransitionFinalized"; + } + return object; + }; + + /** + * Converts this PlatformEventV0 to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @instance + * @returns {Object.} JSON object + */ + PlatformEventV0.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + PlatformEventV0.BlockMetadata = (function() { + + /** + * Properties of a BlockMetadata. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @interface IBlockMetadata + * @property {number|Long|null} [height] BlockMetadata height + * @property {number|Long|null} [timeMs] BlockMetadata timeMs + * @property {Uint8Array|null} [blockIdHash] BlockMetadata blockIdHash + */ + + /** + * Constructs a new BlockMetadata. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @classdesc Represents a BlockMetadata. + * @implements IBlockMetadata + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata=} [properties] Properties to set + */ + function BlockMetadata(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * BlockMetadata height. + * @member {number|Long} height + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @instance + */ + BlockMetadata.prototype.height = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * BlockMetadata timeMs. + * @member {number|Long} timeMs + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @instance + */ + BlockMetadata.prototype.timeMs = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * BlockMetadata blockIdHash. + * @member {Uint8Array} blockIdHash + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @instance + */ + BlockMetadata.prototype.blockIdHash = $util.newBuffer([]); + + /** + * Creates a new BlockMetadata instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} BlockMetadata instance + */ + BlockMetadata.create = function create(properties) { + return new BlockMetadata(properties); + }; + + /** + * Encodes the specified BlockMetadata message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata} message BlockMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BlockMetadata.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.height != null && Object.hasOwnProperty.call(message, "height")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.height); + if (message.timeMs != null && Object.hasOwnProperty.call(message, "timeMs")) + writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.timeMs); + if (message.blockIdHash != null && Object.hasOwnProperty.call(message, "blockIdHash")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.blockIdHash); + return writer; + }; + + /** + * Encodes the specified BlockMetadata message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata} message BlockMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BlockMetadata.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BlockMetadata message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} BlockMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BlockMetadata.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.height = reader.uint64(); + break; + case 2: + message.timeMs = reader.uint64(); + break; + case 3: + message.blockIdHash = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BlockMetadata message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} BlockMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BlockMetadata.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BlockMetadata message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BlockMetadata.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.height != null && message.hasOwnProperty("height")) + if (!$util.isInteger(message.height) && !(message.height && $util.isInteger(message.height.low) && $util.isInteger(message.height.high))) + return "height: integer|Long expected"; + if (message.timeMs != null && message.hasOwnProperty("timeMs")) + if (!$util.isInteger(message.timeMs) && !(message.timeMs && $util.isInteger(message.timeMs.low) && $util.isInteger(message.timeMs.high))) + return "timeMs: integer|Long expected"; + if (message.blockIdHash != null && message.hasOwnProperty("blockIdHash")) + if (!(message.blockIdHash && typeof message.blockIdHash.length === "number" || $util.isString(message.blockIdHash))) + return "blockIdHash: buffer expected"; + return null; + }; + + /** + * Creates a BlockMetadata message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} BlockMetadata + */ + BlockMetadata.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata(); + if (object.height != null) + if ($util.Long) + (message.height = $util.Long.fromValue(object.height)).unsigned = true; + else if (typeof object.height === "string") + message.height = parseInt(object.height, 10); + else if (typeof object.height === "number") + message.height = object.height; + else if (typeof object.height === "object") + message.height = new $util.LongBits(object.height.low >>> 0, object.height.high >>> 0).toNumber(true); + if (object.timeMs != null) + if ($util.Long) + (message.timeMs = $util.Long.fromValue(object.timeMs)).unsigned = true; + else if (typeof object.timeMs === "string") + message.timeMs = parseInt(object.timeMs, 10); + else if (typeof object.timeMs === "number") + message.timeMs = object.timeMs; + else if (typeof object.timeMs === "object") + message.timeMs = new $util.LongBits(object.timeMs.low >>> 0, object.timeMs.high >>> 0).toNumber(true); + if (object.blockIdHash != null) + if (typeof object.blockIdHash === "string") + $util.base64.decode(object.blockIdHash, message.blockIdHash = $util.newBuffer($util.base64.length(object.blockIdHash)), 0); + else if (object.blockIdHash.length >= 0) + message.blockIdHash = object.blockIdHash; + return message; + }; + + /** + * Creates a plain object from a BlockMetadata message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} message BlockMetadata + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BlockMetadata.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.height = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.height = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.timeMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.timeMs = options.longs === String ? "0" : 0; + if (options.bytes === String) + object.blockIdHash = ""; + else { + object.blockIdHash = []; + if (options.bytes !== Array) + object.blockIdHash = $util.newBuffer(object.blockIdHash); + } + } + if (message.height != null && message.hasOwnProperty("height")) + if (typeof message.height === "number") + object.height = options.longs === String ? String(message.height) : message.height; + else + object.height = options.longs === String ? $util.Long.prototype.toString.call(message.height) : options.longs === Number ? new $util.LongBits(message.height.low >>> 0, message.height.high >>> 0).toNumber(true) : message.height; + if (message.timeMs != null && message.hasOwnProperty("timeMs")) + if (typeof message.timeMs === "number") + object.timeMs = options.longs === String ? String(message.timeMs) : message.timeMs; + else + object.timeMs = options.longs === String ? $util.Long.prototype.toString.call(message.timeMs) : options.longs === Number ? new $util.LongBits(message.timeMs.low >>> 0, message.timeMs.high >>> 0).toNumber(true) : message.timeMs; + if (message.blockIdHash != null && message.hasOwnProperty("blockIdHash")) + object.blockIdHash = options.bytes === String ? $util.base64.encode(message.blockIdHash, 0, message.blockIdHash.length) : options.bytes === Array ? Array.prototype.slice.call(message.blockIdHash) : message.blockIdHash; + return object; + }; + + /** + * Converts this BlockMetadata to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @instance + * @returns {Object.} JSON object + */ + BlockMetadata.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BlockMetadata; + })(); + + PlatformEventV0.BlockCommitted = (function() { + + /** + * Properties of a BlockCommitted. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @interface IBlockCommitted + * @property {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata|null} [meta] BlockCommitted meta + * @property {number|null} [txCount] BlockCommitted txCount + */ + + /** + * Constructs a new BlockCommitted. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @classdesc Represents a BlockCommitted. + * @implements IBlockCommitted + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted=} [properties] Properties to set + */ + function BlockCommitted(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * BlockCommitted meta. + * @member {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata|null|undefined} meta + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @instance + */ + BlockCommitted.prototype.meta = null; + + /** + * BlockCommitted txCount. + * @member {number} txCount + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @instance + */ + BlockCommitted.prototype.txCount = 0; + + /** + * Creates a new BlockCommitted instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} BlockCommitted instance + */ + BlockCommitted.create = function create(properties) { + return new BlockCommitted(properties); + }; + + /** + * Encodes the specified BlockCommitted message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted} message BlockCommitted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BlockCommitted.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.meta != null && Object.hasOwnProperty.call(message, "meta")) + $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.encode(message.meta, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.txCount != null && Object.hasOwnProperty.call(message, "txCount")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.txCount); + return writer; + }; + + /** + * Encodes the specified BlockCommitted message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted} message BlockCommitted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BlockCommitted.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BlockCommitted message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} BlockCommitted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BlockCommitted.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.meta = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.decode(reader, reader.uint32()); + break; + case 2: + message.txCount = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BlockCommitted message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} BlockCommitted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BlockCommitted.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BlockCommitted message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BlockCommitted.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.meta != null && message.hasOwnProperty("meta")) { + var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.verify(message.meta); + if (error) + return "meta." + error; + } + if (message.txCount != null && message.hasOwnProperty("txCount")) + if (!$util.isInteger(message.txCount)) + return "txCount: integer expected"; + return null; + }; + + /** + * Creates a BlockCommitted message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} BlockCommitted + */ + BlockCommitted.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted(); + if (object.meta != null) { + if (typeof object.meta !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.meta: object expected"); + message.meta = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.fromObject(object.meta); + } + if (object.txCount != null) + message.txCount = object.txCount >>> 0; + return message; + }; + + /** + * Creates a plain object from a BlockCommitted message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} message BlockCommitted + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BlockCommitted.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.meta = null; + object.txCount = 0; + } + if (message.meta != null && message.hasOwnProperty("meta")) + object.meta = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.toObject(message.meta, options); + if (message.txCount != null && message.hasOwnProperty("txCount")) + object.txCount = message.txCount; + return object; + }; + + /** + * Converts this BlockCommitted to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @instance + * @returns {Object.} JSON object + */ + BlockCommitted.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BlockCommitted; + })(); + + PlatformEventV0.StateTransitionFinalized = (function() { + + /** + * Properties of a StateTransitionFinalized. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @interface IStateTransitionFinalized + * @property {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata|null} [meta] StateTransitionFinalized meta + * @property {Uint8Array|null} [txHash] StateTransitionFinalized txHash + */ + + /** + * Constructs a new StateTransitionFinalized. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @classdesc Represents a StateTransitionFinalized. + * @implements IStateTransitionFinalized + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized=} [properties] Properties to set + */ + function StateTransitionFinalized(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * StateTransitionFinalized meta. + * @member {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata|null|undefined} meta + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @instance + */ + StateTransitionFinalized.prototype.meta = null; + + /** + * StateTransitionFinalized txHash. + * @member {Uint8Array} txHash + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @instance + */ + StateTransitionFinalized.prototype.txHash = $util.newBuffer([]); + + /** + * Creates a new StateTransitionFinalized instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} StateTransitionFinalized instance + */ + StateTransitionFinalized.create = function create(properties) { + return new StateTransitionFinalized(properties); + }; + + /** + * Encodes the specified StateTransitionFinalized message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized} message StateTransitionFinalized message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StateTransitionFinalized.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.meta != null && Object.hasOwnProperty.call(message, "meta")) + $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.encode(message.meta, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.txHash != null && Object.hasOwnProperty.call(message, "txHash")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.txHash); + return writer; + }; + + /** + * Encodes the specified StateTransitionFinalized message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized} message StateTransitionFinalized message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StateTransitionFinalized.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a StateTransitionFinalized message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} StateTransitionFinalized + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StateTransitionFinalized.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.meta = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.decode(reader, reader.uint32()); + break; + case 2: + message.txHash = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a StateTransitionFinalized message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} StateTransitionFinalized + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StateTransitionFinalized.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a StateTransitionFinalized message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + StateTransitionFinalized.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.meta != null && message.hasOwnProperty("meta")) { + var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.verify(message.meta); + if (error) + return "meta." + error; + } + if (message.txHash != null && message.hasOwnProperty("txHash")) + if (!(message.txHash && typeof message.txHash.length === "number" || $util.isString(message.txHash))) + return "txHash: buffer expected"; + return null; + }; + + /** + * Creates a StateTransitionFinalized message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} StateTransitionFinalized + */ + StateTransitionFinalized.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized(); + if (object.meta != null) { + if (typeof object.meta !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.meta: object expected"); + message.meta = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.fromObject(object.meta); + } + if (object.txHash != null) + if (typeof object.txHash === "string") + $util.base64.decode(object.txHash, message.txHash = $util.newBuffer($util.base64.length(object.txHash)), 0); + else if (object.txHash.length >= 0) + message.txHash = object.txHash; + return message; + }; + + /** + * Creates a plain object from a StateTransitionFinalized message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} message StateTransitionFinalized + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + StateTransitionFinalized.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.meta = null; + if (options.bytes === String) + object.txHash = ""; + else { + object.txHash = []; + if (options.bytes !== Array) + object.txHash = $util.newBuffer(object.txHash); + } + } + if (message.meta != null && message.hasOwnProperty("meta")) + object.meta = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.toObject(message.meta, options); + if (message.txHash != null && message.hasOwnProperty("txHash")) + object.txHash = options.bytes === String ? $util.base64.encode(message.txHash, 0, message.txHash.length) : options.bytes === Array ? Array.prototype.slice.call(message.txHash) : message.txHash; + return object; + }; + + /** + * Converts this StateTransitionFinalized to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @instance + * @returns {Object.} JSON object + */ + StateTransitionFinalized.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return StateTransitionFinalized; + })(); + + return PlatformEventV0; + })(); + v0.Platform = (function() { /** @@ -2145,6 +4390,39 @@ $root.org = (function() { * @variation 2 */ + /** + * Callback as used by {@link org.dash.platform.dapi.v0.Platform#subscribePlatformEvents}. + * @memberof org.dash.platform.dapi.v0.Platform + * @typedef SubscribePlatformEventsCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} [response] PlatformSubscriptionResponse + */ + + /** + * Calls SubscribePlatformEvents. + * @function subscribePlatformEvents + * @memberof org.dash.platform.dapi.v0.Platform + * @instance + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest} request PlatformSubscriptionRequest message or plain object + * @param {org.dash.platform.dapi.v0.Platform.SubscribePlatformEventsCallback} callback Node-style callback called with the error, if any, and PlatformSubscriptionResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Platform.prototype.subscribePlatformEvents = function subscribePlatformEvents(request, callback) { + return this.rpcCall(subscribePlatformEvents, $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest, $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse, request, callback); + }, "name", { value: "SubscribePlatformEvents" }); + + /** + * Calls SubscribePlatformEvents. + * @function subscribePlatformEvents + * @memberof org.dash.platform.dapi.v0.Platform + * @instance + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest} request PlatformSubscriptionRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + return Platform; })(); diff --git a/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java b/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java index 0c5dfedfdeb..0eca2ab449d 100644 --- a/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java +++ b/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java @@ -1472,6 +1472,37 @@ org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersResponse> getG return getGetGroupActionSignersMethod; } + private static volatile io.grpc.MethodDescriptor getSubscribePlatformEventsMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "SubscribePlatformEvents", + requestType = org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest.class, + responseType = org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING) + public static io.grpc.MethodDescriptor getSubscribePlatformEventsMethod() { + io.grpc.MethodDescriptor getSubscribePlatformEventsMethod; + if ((getSubscribePlatformEventsMethod = PlatformGrpc.getSubscribePlatformEventsMethod) == null) { + synchronized (PlatformGrpc.class) { + if ((getSubscribePlatformEventsMethod = PlatformGrpc.getSubscribePlatformEventsMethod) == null) { + PlatformGrpc.getSubscribePlatformEventsMethod = getSubscribePlatformEventsMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SubscribePlatformEvents")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( + org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse.getDefaultInstance())) + .setSchemaDescriptor(new PlatformMethodDescriptorSupplier("SubscribePlatformEvents")) + .build(); + } + } + } + return getSubscribePlatformEventsMethod; + } + /** * Creates a new async stub that supports all call types for the service */ @@ -1864,6 +1895,16 @@ public void getGroupActionSigners(org.dash.platform.dapi.v0.PlatformOuterClass.G io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getGetGroupActionSignersMethod(), responseObserver); } + /** + *
+     * Bi-directional stream for multiplexed platform events subscriptions
+     * 
+ */ + public void subscribePlatformEvents(org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getSubscribePlatformEventsMethod(), responseObserver); + } + @java.lang.Override public final io.grpc.ServerServiceDefinition bindService() { return io.grpc.ServerServiceDefinition.builder(getServiceDescriptor()) .addMethod( @@ -2195,6 +2236,13 @@ public void getGroupActionSigners(org.dash.platform.dapi.v0.PlatformOuterClass.G org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersRequest, org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersResponse>( this, METHODID_GET_GROUP_ACTION_SIGNERS))) + .addMethod( + getSubscribePlatformEventsMethod(), + io.grpc.stub.ServerCalls.asyncServerStreamingCall( + new MethodHandlers< + org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest, + org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse>( + this, METHODID_SUBSCRIBE_PLATFORM_EVENTS))) .build(); } } @@ -2603,6 +2651,17 @@ public void getGroupActionSigners(org.dash.platform.dapi.v0.PlatformOuterClass.G io.grpc.stub.ClientCalls.asyncUnaryCall( getChannel().newCall(getGetGroupActionSignersMethod(), getCallOptions()), request, responseObserver); } + + /** + *
+     * Bi-directional stream for multiplexed platform events subscriptions
+     * 
+ */ + public void subscribePlatformEvents(org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncServerStreamingCall( + getChannel().newCall(getSubscribePlatformEventsMethod(), getCallOptions()), request, responseObserver); + } } /** @@ -2962,6 +3021,17 @@ public org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersRespons return io.grpc.stub.ClientCalls.blockingUnaryCall( getChannel(), getGetGroupActionSignersMethod(), getCallOptions(), request); } + + /** + *
+     * Bi-directional stream for multiplexed platform events subscriptions
+     * 
+ */ + public java.util.Iterator subscribePlatformEvents( + org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest request) { + return io.grpc.stub.ClientCalls.blockingServerStreamingCall( + getChannel(), getSubscribePlatformEventsMethod(), getCallOptions(), request); + } } /** @@ -3417,6 +3487,7 @@ public com.google.common.util.concurrent.ListenableFuture implements io.grpc.stub.ServerCalls.UnaryMethod, @@ -3623,6 +3694,10 @@ public void invoke(Req request, io.grpc.stub.StreamObserver responseObserv serviceImpl.getGroupActionSigners((org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersRequest) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_SUBSCRIBE_PLATFORM_EVENTS: + serviceImpl.subscribePlatformEvents((org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; default: throw new AssertionError(); } @@ -3731,6 +3806,7 @@ public static io.grpc.ServiceDescriptor getServiceDescriptor() { .addMethod(getGetGroupInfosMethod()) .addMethod(getGetGroupActionsMethod()) .addMethod(getGetGroupActionSignersMethod()) + .addMethod(getSubscribePlatformEventsMethod()) .build(); } } diff --git a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js index 9b2edb1ce72..2a5d259aa75 100644 --- a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js +++ b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js @@ -54,6 +54,2251 @@ $root.org = (function() { */ var v0 = {}; + v0.PlatformSubscriptionRequest = (function() { + + /** + * Properties of a PlatformSubscriptionRequest. + * @memberof org.dash.platform.dapi.v0 + * @interface IPlatformSubscriptionRequest + * @property {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.IPlatformSubscriptionRequestV0|null} [v0] PlatformSubscriptionRequest v0 + */ + + /** + * Constructs a new PlatformSubscriptionRequest. + * @memberof org.dash.platform.dapi.v0 + * @classdesc Represents a PlatformSubscriptionRequest. + * @implements IPlatformSubscriptionRequest + * @constructor + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest=} [properties] Properties to set + */ + function PlatformSubscriptionRequest(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlatformSubscriptionRequest v0. + * @member {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.IPlatformSubscriptionRequestV0|null|undefined} v0 + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @instance + */ + PlatformSubscriptionRequest.prototype.v0 = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * PlatformSubscriptionRequest version. + * @member {"v0"|undefined} version + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @instance + */ + Object.defineProperty(PlatformSubscriptionRequest.prototype, "version", { + get: $util.oneOfGetter($oneOfFields = ["v0"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new PlatformSubscriptionRequest instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest} PlatformSubscriptionRequest instance + */ + PlatformSubscriptionRequest.create = function create(properties) { + return new PlatformSubscriptionRequest(properties); + }; + + /** + * Encodes the specified PlatformSubscriptionRequest message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionRequest.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest} message PlatformSubscriptionRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionRequest.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.v0 != null && Object.hasOwnProperty.call(message, "v0")) + $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.encode(message.v0, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlatformSubscriptionRequest message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionRequest.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest} message PlatformSubscriptionRequest message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionRequest.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlatformSubscriptionRequest message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest} PlatformSubscriptionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionRequest.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.v0 = $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlatformSubscriptionRequest message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest} PlatformSubscriptionRequest + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionRequest.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlatformSubscriptionRequest message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlatformSubscriptionRequest.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.v0 != null && message.hasOwnProperty("v0")) { + properties.version = 1; + { + var error = $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.verify(message.v0); + if (error) + return "v0." + error; + } + } + return null; + }; + + /** + * Creates a PlatformSubscriptionRequest message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest} PlatformSubscriptionRequest + */ + PlatformSubscriptionRequest.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest(); + if (object.v0 != null) { + if (typeof object.v0 !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformSubscriptionRequest.v0: object expected"); + message.v0 = $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.fromObject(object.v0); + } + return message; + }; + + /** + * Creates a plain object from a PlatformSubscriptionRequest message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionRequest} message PlatformSubscriptionRequest + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlatformSubscriptionRequest.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.v0 != null && message.hasOwnProperty("v0")) { + object.v0 = $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.toObject(message.v0, options); + if (options.oneofs) + object.version = "v0"; + } + return object; + }; + + /** + * Converts this PlatformSubscriptionRequest to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @instance + * @returns {Object.} JSON object + */ + PlatformSubscriptionRequest.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 = (function() { + + /** + * Properties of a PlatformSubscriptionRequestV0. + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @interface IPlatformSubscriptionRequestV0 + * @property {org.dash.platform.dapi.v0.IPlatformFilterV0|null} [filter] PlatformSubscriptionRequestV0 filter + */ + + /** + * Constructs a new PlatformSubscriptionRequestV0. + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest + * @classdesc Represents a PlatformSubscriptionRequestV0. + * @implements IPlatformSubscriptionRequestV0 + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.IPlatformSubscriptionRequestV0=} [properties] Properties to set + */ + function PlatformSubscriptionRequestV0(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlatformSubscriptionRequestV0 filter. + * @member {org.dash.platform.dapi.v0.IPlatformFilterV0|null|undefined} filter + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @instance + */ + PlatformSubscriptionRequestV0.prototype.filter = null; + + /** + * Creates a new PlatformSubscriptionRequestV0 instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.IPlatformSubscriptionRequestV0=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} PlatformSubscriptionRequestV0 instance + */ + PlatformSubscriptionRequestV0.create = function create(properties) { + return new PlatformSubscriptionRequestV0(properties); + }; + + /** + * Encodes the specified PlatformSubscriptionRequestV0 message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.IPlatformSubscriptionRequestV0} message PlatformSubscriptionRequestV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionRequestV0.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) + $root.org.dash.platform.dapi.v0.PlatformFilterV0.encode(message.filter, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlatformSubscriptionRequestV0 message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.IPlatformSubscriptionRequestV0} message PlatformSubscriptionRequestV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionRequestV0.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlatformSubscriptionRequestV0 message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} PlatformSubscriptionRequestV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionRequestV0.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.filter = $root.org.dash.platform.dapi.v0.PlatformFilterV0.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlatformSubscriptionRequestV0 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} PlatformSubscriptionRequestV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionRequestV0.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlatformSubscriptionRequestV0 message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlatformSubscriptionRequestV0.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.filter != null && message.hasOwnProperty("filter")) { + var error = $root.org.dash.platform.dapi.v0.PlatformFilterV0.verify(message.filter); + if (error) + return "filter." + error; + } + return null; + }; + + /** + * Creates a PlatformSubscriptionRequestV0 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} PlatformSubscriptionRequestV0 + */ + PlatformSubscriptionRequestV0.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0(); + if (object.filter != null) { + if (typeof object.filter !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.filter: object expected"); + message.filter = $root.org.dash.platform.dapi.v0.PlatformFilterV0.fromObject(object.filter); + } + return message; + }; + + /** + * Creates a plain object from a PlatformSubscriptionRequestV0 message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} message PlatformSubscriptionRequestV0 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlatformSubscriptionRequestV0.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + object.filter = null; + if (message.filter != null && message.hasOwnProperty("filter")) + object.filter = $root.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(message.filter, options); + return object; + }; + + /** + * Converts this PlatformSubscriptionRequestV0 to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @instance + * @returns {Object.} JSON object + */ + PlatformSubscriptionRequestV0.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PlatformSubscriptionRequestV0; + })(); + + return PlatformSubscriptionRequest; + })(); + + v0.PlatformSubscriptionResponse = (function() { + + /** + * Properties of a PlatformSubscriptionResponse. + * @memberof org.dash.platform.dapi.v0 + * @interface IPlatformSubscriptionResponse + * @property {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.IPlatformSubscriptionResponseV0|null} [v0] PlatformSubscriptionResponse v0 + */ + + /** + * Constructs a new PlatformSubscriptionResponse. + * @memberof org.dash.platform.dapi.v0 + * @classdesc Represents a PlatformSubscriptionResponse. + * @implements IPlatformSubscriptionResponse + * @constructor + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionResponse=} [properties] Properties to set + */ + function PlatformSubscriptionResponse(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlatformSubscriptionResponse v0. + * @member {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.IPlatformSubscriptionResponseV0|null|undefined} v0 + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @instance + */ + PlatformSubscriptionResponse.prototype.v0 = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * PlatformSubscriptionResponse version. + * @member {"v0"|undefined} version + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @instance + */ + Object.defineProperty(PlatformSubscriptionResponse.prototype, "version", { + get: $util.oneOfGetter($oneOfFields = ["v0"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new PlatformSubscriptionResponse instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionResponse=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} PlatformSubscriptionResponse instance + */ + PlatformSubscriptionResponse.create = function create(properties) { + return new PlatformSubscriptionResponse(properties); + }; + + /** + * Encodes the specified PlatformSubscriptionResponse message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionResponse.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionResponse} message PlatformSubscriptionResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionResponse.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.v0 != null && Object.hasOwnProperty.call(message, "v0")) + $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.encode(message.v0, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlatformSubscriptionResponse message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionResponse.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionResponse} message PlatformSubscriptionResponse message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionResponse.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlatformSubscriptionResponse message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} PlatformSubscriptionResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionResponse.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.v0 = $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlatformSubscriptionResponse message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} PlatformSubscriptionResponse + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionResponse.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlatformSubscriptionResponse message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlatformSubscriptionResponse.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.v0 != null && message.hasOwnProperty("v0")) { + properties.version = 1; + { + var error = $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.verify(message.v0); + if (error) + return "v0." + error; + } + } + return null; + }; + + /** + * Creates a PlatformSubscriptionResponse message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} PlatformSubscriptionResponse + */ + PlatformSubscriptionResponse.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse(); + if (object.v0 != null) { + if (typeof object.v0 !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformSubscriptionResponse.v0: object expected"); + message.v0 = $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.fromObject(object.v0); + } + return message; + }; + + /** + * Creates a plain object from a PlatformSubscriptionResponse message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} message PlatformSubscriptionResponse + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlatformSubscriptionResponse.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.v0 != null && message.hasOwnProperty("v0")) { + object.v0 = $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.toObject(message.v0, options); + if (options.oneofs) + object.version = "v0"; + } + return object; + }; + + /** + * Converts this PlatformSubscriptionResponse to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @instance + * @returns {Object.} JSON object + */ + PlatformSubscriptionResponse.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 = (function() { + + /** + * Properties of a PlatformSubscriptionResponseV0. + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @interface IPlatformSubscriptionResponseV0 + * @property {string|null} [clientSubscriptionId] PlatformSubscriptionResponseV0 clientSubscriptionId + * @property {org.dash.platform.dapi.v0.IPlatformEventV0|null} [event] PlatformSubscriptionResponseV0 event + */ + + /** + * Constructs a new PlatformSubscriptionResponseV0. + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse + * @classdesc Represents a PlatformSubscriptionResponseV0. + * @implements IPlatformSubscriptionResponseV0 + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.IPlatformSubscriptionResponseV0=} [properties] Properties to set + */ + function PlatformSubscriptionResponseV0(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlatformSubscriptionResponseV0 clientSubscriptionId. + * @member {string} clientSubscriptionId + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @instance + */ + PlatformSubscriptionResponseV0.prototype.clientSubscriptionId = ""; + + /** + * PlatformSubscriptionResponseV0 event. + * @member {org.dash.platform.dapi.v0.IPlatformEventV0|null|undefined} event + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @instance + */ + PlatformSubscriptionResponseV0.prototype.event = null; + + /** + * Creates a new PlatformSubscriptionResponseV0 instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.IPlatformSubscriptionResponseV0=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} PlatformSubscriptionResponseV0 instance + */ + PlatformSubscriptionResponseV0.create = function create(properties) { + return new PlatformSubscriptionResponseV0(properties); + }; + + /** + * Encodes the specified PlatformSubscriptionResponseV0 message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.IPlatformSubscriptionResponseV0} message PlatformSubscriptionResponseV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionResponseV0.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.clientSubscriptionId != null && Object.hasOwnProperty.call(message, "clientSubscriptionId")) + writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientSubscriptionId); + if (message.event != null && Object.hasOwnProperty.call(message, "event")) + $root.org.dash.platform.dapi.v0.PlatformEventV0.encode(message.event, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlatformSubscriptionResponseV0 message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.IPlatformSubscriptionResponseV0} message PlatformSubscriptionResponseV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformSubscriptionResponseV0.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlatformSubscriptionResponseV0 message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} PlatformSubscriptionResponseV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionResponseV0.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.clientSubscriptionId = reader.string(); + break; + case 2: + message.event = $root.org.dash.platform.dapi.v0.PlatformEventV0.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlatformSubscriptionResponseV0 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} PlatformSubscriptionResponseV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformSubscriptionResponseV0.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlatformSubscriptionResponseV0 message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlatformSubscriptionResponseV0.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.clientSubscriptionId != null && message.hasOwnProperty("clientSubscriptionId")) + if (!$util.isString(message.clientSubscriptionId)) + return "clientSubscriptionId: string expected"; + if (message.event != null && message.hasOwnProperty("event")) { + var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.verify(message.event); + if (error) + return "event." + error; + } + return null; + }; + + /** + * Creates a PlatformSubscriptionResponseV0 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} PlatformSubscriptionResponseV0 + */ + PlatformSubscriptionResponseV0.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0(); + if (object.clientSubscriptionId != null) + message.clientSubscriptionId = String(object.clientSubscriptionId); + if (object.event != null) { + if (typeof object.event !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.event: object expected"); + message.event = $root.org.dash.platform.dapi.v0.PlatformEventV0.fromObject(object.event); + } + return message; + }; + + /** + * Creates a plain object from a PlatformSubscriptionResponseV0 message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} message PlatformSubscriptionResponseV0 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlatformSubscriptionResponseV0.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.clientSubscriptionId = ""; + object.event = null; + } + if (message.clientSubscriptionId != null && message.hasOwnProperty("clientSubscriptionId")) + object.clientSubscriptionId = message.clientSubscriptionId; + if (message.event != null && message.hasOwnProperty("event")) + object.event = $root.org.dash.platform.dapi.v0.PlatformEventV0.toObject(message.event, options); + return object; + }; + + /** + * Converts this PlatformSubscriptionResponseV0 to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 + * @instance + * @returns {Object.} JSON object + */ + PlatformSubscriptionResponseV0.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PlatformSubscriptionResponseV0; + })(); + + return PlatformSubscriptionResponse; + })(); + + v0.StateTransitionResultFilter = (function() { + + /** + * Properties of a StateTransitionResultFilter. + * @memberof org.dash.platform.dapi.v0 + * @interface IStateTransitionResultFilter + * @property {Uint8Array|null} [txHash] StateTransitionResultFilter txHash + */ + + /** + * Constructs a new StateTransitionResultFilter. + * @memberof org.dash.platform.dapi.v0 + * @classdesc Represents a StateTransitionResultFilter. + * @implements IStateTransitionResultFilter + * @constructor + * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter=} [properties] Properties to set + */ + function StateTransitionResultFilter(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * StateTransitionResultFilter txHash. + * @member {Uint8Array} txHash + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @instance + */ + StateTransitionResultFilter.prototype.txHash = $util.newBuffer([]); + + /** + * Creates a new StateTransitionResultFilter instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter instance + */ + StateTransitionResultFilter.create = function create(properties) { + return new StateTransitionResultFilter(properties); + }; + + /** + * Encodes the specified StateTransitionResultFilter message. Does not implicitly {@link org.dash.platform.dapi.v0.StateTransitionResultFilter.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter} message StateTransitionResultFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StateTransitionResultFilter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.txHash != null && Object.hasOwnProperty.call(message, "txHash")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.txHash); + return writer; + }; + + /** + * Encodes the specified StateTransitionResultFilter message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.StateTransitionResultFilter.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter} message StateTransitionResultFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StateTransitionResultFilter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a StateTransitionResultFilter message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StateTransitionResultFilter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.StateTransitionResultFilter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.txHash = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a StateTransitionResultFilter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StateTransitionResultFilter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a StateTransitionResultFilter message. + * @function verify + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + StateTransitionResultFilter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.txHash != null && message.hasOwnProperty("txHash")) + if (!(message.txHash && typeof message.txHash.length === "number" || $util.isString(message.txHash))) + return "txHash: buffer expected"; + return null; + }; + + /** + * Creates a StateTransitionResultFilter message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter + */ + StateTransitionResultFilter.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.StateTransitionResultFilter) + return object; + var message = new $root.org.dash.platform.dapi.v0.StateTransitionResultFilter(); + if (object.txHash != null) + if (typeof object.txHash === "string") + $util.base64.decode(object.txHash, message.txHash = $util.newBuffer($util.base64.length(object.txHash)), 0); + else if (object.txHash.length >= 0) + message.txHash = object.txHash; + return message; + }; + + /** + * Creates a plain object from a StateTransitionResultFilter message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.StateTransitionResultFilter} message StateTransitionResultFilter + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + StateTransitionResultFilter.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if (options.bytes === String) + object.txHash = ""; + else { + object.txHash = []; + if (options.bytes !== Array) + object.txHash = $util.newBuffer(object.txHash); + } + if (message.txHash != null && message.hasOwnProperty("txHash")) + object.txHash = options.bytes === String ? $util.base64.encode(message.txHash, 0, message.txHash.length) : options.bytes === Array ? Array.prototype.slice.call(message.txHash) : message.txHash; + return object; + }; + + /** + * Converts this StateTransitionResultFilter to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter + * @instance + * @returns {Object.} JSON object + */ + StateTransitionResultFilter.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return StateTransitionResultFilter; + })(); + + v0.PlatformFilterV0 = (function() { + + /** + * Properties of a PlatformFilterV0. + * @memberof org.dash.platform.dapi.v0 + * @interface IPlatformFilterV0 + * @property {boolean|null} [all] PlatformFilterV0 all + * @property {boolean|null} [blockCommitted] PlatformFilterV0 blockCommitted + * @property {org.dash.platform.dapi.v0.IStateTransitionResultFilter|null} [stateTransitionResult] PlatformFilterV0 stateTransitionResult + */ + + /** + * Constructs a new PlatformFilterV0. + * @memberof org.dash.platform.dapi.v0 + * @classdesc Represents a PlatformFilterV0. + * @implements IPlatformFilterV0 + * @constructor + * @param {org.dash.platform.dapi.v0.IPlatformFilterV0=} [properties] Properties to set + */ + function PlatformFilterV0(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlatformFilterV0 all. + * @member {boolean} all + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @instance + */ + PlatformFilterV0.prototype.all = false; + + /** + * PlatformFilterV0 blockCommitted. + * @member {boolean} blockCommitted + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @instance + */ + PlatformFilterV0.prototype.blockCommitted = false; + + /** + * PlatformFilterV0 stateTransitionResult. + * @member {org.dash.platform.dapi.v0.IStateTransitionResultFilter|null|undefined} stateTransitionResult + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @instance + */ + PlatformFilterV0.prototype.stateTransitionResult = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * PlatformFilterV0 kind. + * @member {"all"|"blockCommitted"|"stateTransitionResult"|undefined} kind + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @instance + */ + Object.defineProperty(PlatformFilterV0.prototype, "kind", { + get: $util.oneOfGetter($oneOfFields = ["all", "blockCommitted", "stateTransitionResult"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new PlatformFilterV0 instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {org.dash.platform.dapi.v0.IPlatformFilterV0=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0} PlatformFilterV0 instance + */ + PlatformFilterV0.create = function create(properties) { + return new PlatformFilterV0(properties); + }; + + /** + * Encodes the specified PlatformFilterV0 message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {org.dash.platform.dapi.v0.IPlatformFilterV0} message PlatformFilterV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformFilterV0.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.all != null && Object.hasOwnProperty.call(message, "all")) + writer.uint32(/* id 1, wireType 0 =*/8).bool(message.all); + if (message.blockCommitted != null && Object.hasOwnProperty.call(message, "blockCommitted")) + writer.uint32(/* id 2, wireType 0 =*/16).bool(message.blockCommitted); + if (message.stateTransitionResult != null && Object.hasOwnProperty.call(message, "stateTransitionResult")) + $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.encode(message.stateTransitionResult, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlatformFilterV0 message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {org.dash.platform.dapi.v0.IPlatformFilterV0} message PlatformFilterV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformFilterV0.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlatformFilterV0 message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0} PlatformFilterV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformFilterV0.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.all = reader.bool(); + break; + case 2: + message.blockCommitted = reader.bool(); + break; + case 3: + message.stateTransitionResult = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlatformFilterV0 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0} PlatformFilterV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformFilterV0.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlatformFilterV0 message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlatformFilterV0.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.all != null && message.hasOwnProperty("all")) { + properties.kind = 1; + if (typeof message.all !== "boolean") + return "all: boolean expected"; + } + if (message.blockCommitted != null && message.hasOwnProperty("blockCommitted")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + if (typeof message.blockCommitted !== "boolean") + return "blockCommitted: boolean expected"; + } + if (message.stateTransitionResult != null && message.hasOwnProperty("stateTransitionResult")) { + if (properties.kind === 1) + return "kind: multiple values"; + properties.kind = 1; + { + var error = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.verify(message.stateTransitionResult); + if (error) + return "stateTransitionResult." + error; + } + } + return null; + }; + + /** + * Creates a PlatformFilterV0 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0} PlatformFilterV0 + */ + PlatformFilterV0.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformFilterV0) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0(); + if (object.all != null) + message.all = Boolean(object.all); + if (object.blockCommitted != null) + message.blockCommitted = Boolean(object.blockCommitted); + if (object.stateTransitionResult != null) { + if (typeof object.stateTransitionResult !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformFilterV0.stateTransitionResult: object expected"); + message.stateTransitionResult = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.fromObject(object.stateTransitionResult); + } + return message; + }; + + /** + * Creates a plain object from a PlatformFilterV0 message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0} message PlatformFilterV0 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlatformFilterV0.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.all != null && message.hasOwnProperty("all")) { + object.all = message.all; + if (options.oneofs) + object.kind = "all"; + } + if (message.blockCommitted != null && message.hasOwnProperty("blockCommitted")) { + object.blockCommitted = message.blockCommitted; + if (options.oneofs) + object.kind = "blockCommitted"; + } + if (message.stateTransitionResult != null && message.hasOwnProperty("stateTransitionResult")) { + object.stateTransitionResult = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject(message.stateTransitionResult, options); + if (options.oneofs) + object.kind = "stateTransitionResult"; + } + return object; + }; + + /** + * Converts this PlatformFilterV0 to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @instance + * @returns {Object.} JSON object + */ + PlatformFilterV0.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return PlatformFilterV0; + })(); + + v0.PlatformEventV0 = (function() { + + /** + * Properties of a PlatformEventV0. + * @memberof org.dash.platform.dapi.v0 + * @interface IPlatformEventV0 + * @property {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted|null} [blockCommitted] PlatformEventV0 blockCommitted + * @property {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized|null} [stateTransitionFinalized] PlatformEventV0 stateTransitionFinalized + */ + + /** + * Constructs a new PlatformEventV0. + * @memberof org.dash.platform.dapi.v0 + * @classdesc Represents a PlatformEventV0. + * @implements IPlatformEventV0 + * @constructor + * @param {org.dash.platform.dapi.v0.IPlatformEventV0=} [properties] Properties to set + */ + function PlatformEventV0(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * PlatformEventV0 blockCommitted. + * @member {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted|null|undefined} blockCommitted + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @instance + */ + PlatformEventV0.prototype.blockCommitted = null; + + /** + * PlatformEventV0 stateTransitionFinalized. + * @member {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized|null|undefined} stateTransitionFinalized + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @instance + */ + PlatformEventV0.prototype.stateTransitionFinalized = null; + + // OneOf field names bound to virtual getters and setters + var $oneOfFields; + + /** + * PlatformEventV0 event. + * @member {"blockCommitted"|"stateTransitionFinalized"|undefined} event + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @instance + */ + Object.defineProperty(PlatformEventV0.prototype, "event", { + get: $util.oneOfGetter($oneOfFields = ["blockCommitted", "stateTransitionFinalized"]), + set: $util.oneOfSetter($oneOfFields) + }); + + /** + * Creates a new PlatformEventV0 instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {org.dash.platform.dapi.v0.IPlatformEventV0=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformEventV0} PlatformEventV0 instance + */ + PlatformEventV0.create = function create(properties) { + return new PlatformEventV0(properties); + }; + + /** + * Encodes the specified PlatformEventV0 message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {org.dash.platform.dapi.v0.IPlatformEventV0} message PlatformEventV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformEventV0.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.blockCommitted != null && Object.hasOwnProperty.call(message, "blockCommitted")) + $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.encode(message.blockCommitted, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.stateTransitionFinalized != null && Object.hasOwnProperty.call(message, "stateTransitionFinalized")) + $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.encode(message.stateTransitionFinalized, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + return writer; + }; + + /** + * Encodes the specified PlatformEventV0 message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {org.dash.platform.dapi.v0.IPlatformEventV0} message PlatformEventV0 message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + PlatformEventV0.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a PlatformEventV0 message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformEventV0} PlatformEventV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformEventV0.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformEventV0(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.blockCommitted = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.decode(reader, reader.uint32()); + break; + case 2: + message.stateTransitionFinalized = $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.decode(reader, reader.uint32()); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a PlatformEventV0 message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformEventV0} PlatformEventV0 + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + PlatformEventV0.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a PlatformEventV0 message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + PlatformEventV0.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + var properties = {}; + if (message.blockCommitted != null && message.hasOwnProperty("blockCommitted")) { + properties.event = 1; + { + var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.verify(message.blockCommitted); + if (error) + return "blockCommitted." + error; + } + } + if (message.stateTransitionFinalized != null && message.hasOwnProperty("stateTransitionFinalized")) { + if (properties.event === 1) + return "event: multiple values"; + properties.event = 1; + { + var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.verify(message.stateTransitionFinalized); + if (error) + return "stateTransitionFinalized." + error; + } + } + return null; + }; + + /** + * Creates a PlatformEventV0 message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformEventV0} PlatformEventV0 + */ + PlatformEventV0.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformEventV0) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformEventV0(); + if (object.blockCommitted != null) { + if (typeof object.blockCommitted !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformEventV0.blockCommitted: object expected"); + message.blockCommitted = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.fromObject(object.blockCommitted); + } + if (object.stateTransitionFinalized != null) { + if (typeof object.stateTransitionFinalized !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformEventV0.stateTransitionFinalized: object expected"); + message.stateTransitionFinalized = $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.fromObject(object.stateTransitionFinalized); + } + return message; + }; + + /** + * Creates a plain object from a PlatformEventV0 message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0} message PlatformEventV0 + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + PlatformEventV0.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (message.blockCommitted != null && message.hasOwnProperty("blockCommitted")) { + object.blockCommitted = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.toObject(message.blockCommitted, options); + if (options.oneofs) + object.event = "blockCommitted"; + } + if (message.stateTransitionFinalized != null && message.hasOwnProperty("stateTransitionFinalized")) { + object.stateTransitionFinalized = $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.toObject(message.stateTransitionFinalized, options); + if (options.oneofs) + object.event = "stateTransitionFinalized"; + } + return object; + }; + + /** + * Converts this PlatformEventV0 to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @instance + * @returns {Object.} JSON object + */ + PlatformEventV0.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + PlatformEventV0.BlockMetadata = (function() { + + /** + * Properties of a BlockMetadata. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @interface IBlockMetadata + * @property {number|Long|null} [height] BlockMetadata height + * @property {number|Long|null} [timeMs] BlockMetadata timeMs + * @property {Uint8Array|null} [blockIdHash] BlockMetadata blockIdHash + */ + + /** + * Constructs a new BlockMetadata. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @classdesc Represents a BlockMetadata. + * @implements IBlockMetadata + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata=} [properties] Properties to set + */ + function BlockMetadata(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * BlockMetadata height. + * @member {number|Long} height + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @instance + */ + BlockMetadata.prototype.height = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * BlockMetadata timeMs. + * @member {number|Long} timeMs + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @instance + */ + BlockMetadata.prototype.timeMs = $util.Long ? $util.Long.fromBits(0,0,true) : 0; + + /** + * BlockMetadata blockIdHash. + * @member {Uint8Array} blockIdHash + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @instance + */ + BlockMetadata.prototype.blockIdHash = $util.newBuffer([]); + + /** + * Creates a new BlockMetadata instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} BlockMetadata instance + */ + BlockMetadata.create = function create(properties) { + return new BlockMetadata(properties); + }; + + /** + * Encodes the specified BlockMetadata message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata} message BlockMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BlockMetadata.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.height != null && Object.hasOwnProperty.call(message, "height")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.height); + if (message.timeMs != null && Object.hasOwnProperty.call(message, "timeMs")) + writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.timeMs); + if (message.blockIdHash != null && Object.hasOwnProperty.call(message, "blockIdHash")) + writer.uint32(/* id 3, wireType 2 =*/26).bytes(message.blockIdHash); + return writer; + }; + + /** + * Encodes the specified BlockMetadata message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata} message BlockMetadata message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BlockMetadata.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BlockMetadata message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} BlockMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BlockMetadata.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.height = reader.uint64(); + break; + case 2: + message.timeMs = reader.uint64(); + break; + case 3: + message.blockIdHash = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BlockMetadata message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} BlockMetadata + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BlockMetadata.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BlockMetadata message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BlockMetadata.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.height != null && message.hasOwnProperty("height")) + if (!$util.isInteger(message.height) && !(message.height && $util.isInteger(message.height.low) && $util.isInteger(message.height.high))) + return "height: integer|Long expected"; + if (message.timeMs != null && message.hasOwnProperty("timeMs")) + if (!$util.isInteger(message.timeMs) && !(message.timeMs && $util.isInteger(message.timeMs.low) && $util.isInteger(message.timeMs.high))) + return "timeMs: integer|Long expected"; + if (message.blockIdHash != null && message.hasOwnProperty("blockIdHash")) + if (!(message.blockIdHash && typeof message.blockIdHash.length === "number" || $util.isString(message.blockIdHash))) + return "blockIdHash: buffer expected"; + return null; + }; + + /** + * Creates a BlockMetadata message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} BlockMetadata + */ + BlockMetadata.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata(); + if (object.height != null) + if ($util.Long) + (message.height = $util.Long.fromValue(object.height)).unsigned = true; + else if (typeof object.height === "string") + message.height = parseInt(object.height, 10); + else if (typeof object.height === "number") + message.height = object.height; + else if (typeof object.height === "object") + message.height = new $util.LongBits(object.height.low >>> 0, object.height.high >>> 0).toNumber(true); + if (object.timeMs != null) + if ($util.Long) + (message.timeMs = $util.Long.fromValue(object.timeMs)).unsigned = true; + else if (typeof object.timeMs === "string") + message.timeMs = parseInt(object.timeMs, 10); + else if (typeof object.timeMs === "number") + message.timeMs = object.timeMs; + else if (typeof object.timeMs === "object") + message.timeMs = new $util.LongBits(object.timeMs.low >>> 0, object.timeMs.high >>> 0).toNumber(true); + if (object.blockIdHash != null) + if (typeof object.blockIdHash === "string") + $util.base64.decode(object.blockIdHash, message.blockIdHash = $util.newBuffer($util.base64.length(object.blockIdHash)), 0); + else if (object.blockIdHash.length >= 0) + message.blockIdHash = object.blockIdHash; + return message; + }; + + /** + * Creates a plain object from a BlockMetadata message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} message BlockMetadata + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BlockMetadata.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.height = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.height = options.longs === String ? "0" : 0; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.timeMs = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.timeMs = options.longs === String ? "0" : 0; + if (options.bytes === String) + object.blockIdHash = ""; + else { + object.blockIdHash = []; + if (options.bytes !== Array) + object.blockIdHash = $util.newBuffer(object.blockIdHash); + } + } + if (message.height != null && message.hasOwnProperty("height")) + if (typeof message.height === "number") + object.height = options.longs === String ? String(message.height) : message.height; + else + object.height = options.longs === String ? $util.Long.prototype.toString.call(message.height) : options.longs === Number ? new $util.LongBits(message.height.low >>> 0, message.height.high >>> 0).toNumber(true) : message.height; + if (message.timeMs != null && message.hasOwnProperty("timeMs")) + if (typeof message.timeMs === "number") + object.timeMs = options.longs === String ? String(message.timeMs) : message.timeMs; + else + object.timeMs = options.longs === String ? $util.Long.prototype.toString.call(message.timeMs) : options.longs === Number ? new $util.LongBits(message.timeMs.low >>> 0, message.timeMs.high >>> 0).toNumber(true) : message.timeMs; + if (message.blockIdHash != null && message.hasOwnProperty("blockIdHash")) + object.blockIdHash = options.bytes === String ? $util.base64.encode(message.blockIdHash, 0, message.blockIdHash.length) : options.bytes === Array ? Array.prototype.slice.call(message.blockIdHash) : message.blockIdHash; + return object; + }; + + /** + * Converts this BlockMetadata to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata + * @instance + * @returns {Object.} JSON object + */ + BlockMetadata.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BlockMetadata; + })(); + + PlatformEventV0.BlockCommitted = (function() { + + /** + * Properties of a BlockCommitted. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @interface IBlockCommitted + * @property {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata|null} [meta] BlockCommitted meta + * @property {number|null} [txCount] BlockCommitted txCount + */ + + /** + * Constructs a new BlockCommitted. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @classdesc Represents a BlockCommitted. + * @implements IBlockCommitted + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted=} [properties] Properties to set + */ + function BlockCommitted(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * BlockCommitted meta. + * @member {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata|null|undefined} meta + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @instance + */ + BlockCommitted.prototype.meta = null; + + /** + * BlockCommitted txCount. + * @member {number} txCount + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @instance + */ + BlockCommitted.prototype.txCount = 0; + + /** + * Creates a new BlockCommitted instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} BlockCommitted instance + */ + BlockCommitted.create = function create(properties) { + return new BlockCommitted(properties); + }; + + /** + * Encodes the specified BlockCommitted message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted} message BlockCommitted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BlockCommitted.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.meta != null && Object.hasOwnProperty.call(message, "meta")) + $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.encode(message.meta, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.txCount != null && Object.hasOwnProperty.call(message, "txCount")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.txCount); + return writer; + }; + + /** + * Encodes the specified BlockCommitted message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted} message BlockCommitted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BlockCommitted.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BlockCommitted message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} BlockCommitted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BlockCommitted.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.meta = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.decode(reader, reader.uint32()); + break; + case 2: + message.txCount = reader.uint32(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BlockCommitted message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} BlockCommitted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BlockCommitted.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BlockCommitted message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BlockCommitted.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.meta != null && message.hasOwnProperty("meta")) { + var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.verify(message.meta); + if (error) + return "meta." + error; + } + if (message.txCount != null && message.hasOwnProperty("txCount")) + if (!$util.isInteger(message.txCount)) + return "txCount: integer expected"; + return null; + }; + + /** + * Creates a BlockCommitted message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} BlockCommitted + */ + BlockCommitted.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted(); + if (object.meta != null) { + if (typeof object.meta !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.meta: object expected"); + message.meta = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.fromObject(object.meta); + } + if (object.txCount != null) + message.txCount = object.txCount >>> 0; + return message; + }; + + /** + * Creates a plain object from a BlockCommitted message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} message BlockCommitted + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BlockCommitted.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.meta = null; + object.txCount = 0; + } + if (message.meta != null && message.hasOwnProperty("meta")) + object.meta = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.toObject(message.meta, options); + if (message.txCount != null && message.hasOwnProperty("txCount")) + object.txCount = message.txCount; + return object; + }; + + /** + * Converts this BlockCommitted to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted + * @instance + * @returns {Object.} JSON object + */ + BlockCommitted.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BlockCommitted; + })(); + + PlatformEventV0.StateTransitionFinalized = (function() { + + /** + * Properties of a StateTransitionFinalized. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @interface IStateTransitionFinalized + * @property {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata|null} [meta] StateTransitionFinalized meta + * @property {Uint8Array|null} [txHash] StateTransitionFinalized txHash + */ + + /** + * Constructs a new StateTransitionFinalized. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @classdesc Represents a StateTransitionFinalized. + * @implements IStateTransitionFinalized + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized=} [properties] Properties to set + */ + function StateTransitionFinalized(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * StateTransitionFinalized meta. + * @member {org.dash.platform.dapi.v0.PlatformEventV0.IBlockMetadata|null|undefined} meta + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @instance + */ + StateTransitionFinalized.prototype.meta = null; + + /** + * StateTransitionFinalized txHash. + * @member {Uint8Array} txHash + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @instance + */ + StateTransitionFinalized.prototype.txHash = $util.newBuffer([]); + + /** + * Creates a new StateTransitionFinalized instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} StateTransitionFinalized instance + */ + StateTransitionFinalized.create = function create(properties) { + return new StateTransitionFinalized(properties); + }; + + /** + * Encodes the specified StateTransitionFinalized message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized} message StateTransitionFinalized message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StateTransitionFinalized.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.meta != null && Object.hasOwnProperty.call(message, "meta")) + $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.encode(message.meta, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.txHash != null && Object.hasOwnProperty.call(message, "txHash")) + writer.uint32(/* id 2, wireType 2 =*/18).bytes(message.txHash); + return writer; + }; + + /** + * Encodes the specified StateTransitionFinalized message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized} message StateTransitionFinalized message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StateTransitionFinalized.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a StateTransitionFinalized message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} StateTransitionFinalized + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StateTransitionFinalized.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.meta = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.decode(reader, reader.uint32()); + break; + case 2: + message.txHash = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a StateTransitionFinalized message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} StateTransitionFinalized + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StateTransitionFinalized.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a StateTransitionFinalized message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + StateTransitionFinalized.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.meta != null && message.hasOwnProperty("meta")) { + var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.verify(message.meta); + if (error) + return "meta." + error; + } + if (message.txHash != null && message.hasOwnProperty("txHash")) + if (!(message.txHash && typeof message.txHash.length === "number" || $util.isString(message.txHash))) + return "txHash: buffer expected"; + return null; + }; + + /** + * Creates a StateTransitionFinalized message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} StateTransitionFinalized + */ + StateTransitionFinalized.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized(); + if (object.meta != null) { + if (typeof object.meta !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.meta: object expected"); + message.meta = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.fromObject(object.meta); + } + if (object.txHash != null) + if (typeof object.txHash === "string") + $util.base64.decode(object.txHash, message.txHash = $util.newBuffer($util.base64.length(object.txHash)), 0); + else if (object.txHash.length >= 0) + message.txHash = object.txHash; + return message; + }; + + /** + * Creates a plain object from a StateTransitionFinalized message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} message StateTransitionFinalized + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + StateTransitionFinalized.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) { + object.meta = null; + if (options.bytes === String) + object.txHash = ""; + else { + object.txHash = []; + if (options.bytes !== Array) + object.txHash = $util.newBuffer(object.txHash); + } + } + if (message.meta != null && message.hasOwnProperty("meta")) + object.meta = $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.toObject(message.meta, options); + if (message.txHash != null && message.hasOwnProperty("txHash")) + object.txHash = options.bytes === String ? $util.base64.encode(message.txHash, 0, message.txHash.length) : options.bytes === Array ? Array.prototype.slice.call(message.txHash) : message.txHash; + return object; + }; + + /** + * Converts this StateTransitionFinalized to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized + * @instance + * @returns {Object.} JSON object + */ + StateTransitionFinalized.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return StateTransitionFinalized; + })(); + + return PlatformEventV0; + })(); + v0.Platform = (function() { /** @@ -1637,6 +3882,39 @@ $root.org = (function() { * @variation 2 */ + /** + * Callback as used by {@link org.dash.platform.dapi.v0.Platform#subscribePlatformEvents}. + * @memberof org.dash.platform.dapi.v0.Platform + * @typedef SubscribePlatformEventsCallback + * @type {function} + * @param {Error|null} error Error, if any + * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} [response] PlatformSubscriptionResponse + */ + + /** + * Calls SubscribePlatformEvents. + * @function subscribePlatformEvents + * @memberof org.dash.platform.dapi.v0.Platform + * @instance + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest} request PlatformSubscriptionRequest message or plain object + * @param {org.dash.platform.dapi.v0.Platform.SubscribePlatformEventsCallback} callback Node-style callback called with the error, if any, and PlatformSubscriptionResponse + * @returns {undefined} + * @variation 1 + */ + Object.defineProperty(Platform.prototype.subscribePlatformEvents = function subscribePlatformEvents(request, callback) { + return this.rpcCall(subscribePlatformEvents, $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest, $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse, request, callback); + }, "name", { value: "SubscribePlatformEvents" }); + + /** + * Calls SubscribePlatformEvents. + * @function subscribePlatformEvents + * @memberof org.dash.platform.dapi.v0.Platform + * @instance + * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest} request PlatformSubscriptionRequest message or plain object + * @returns {Promise} Promise + * @variation 2 + */ + return Platform; })(); diff --git a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js index 59e21a649c9..6a1b88ed549 100644 --- a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js +++ b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js @@ -460,6 +460,19 @@ goog.exportSymbol('proto.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse goog.exportSymbol('proto.org.dash.platform.dapi.v0.KeyPurpose', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.KeyRequestType', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.KeyRequestType.RequestCase', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.VersionCase', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.VersionCase', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.Proof', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.ResponseMetadata', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.SearchKey', null, { proto }); @@ -467,6 +480,7 @@ goog.exportSymbol('proto.org.dash.platform.dapi.v0.SecurityLevelMap', null, { pr goog.exportSymbol('proto.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.SpecificKeys', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.StateTransitionBroadcastError', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.StateTransitionResultFilter', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.VersionCase', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0', null, { proto }); @@ -474,6 +488,216 @@ goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultR goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.VersionCase', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0.ResultCase', null, { proto }); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.oneofGroups_); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.displayName = 'proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.displayName = 'proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.oneofGroups_); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.displayName = 'proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.displayName = 'proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.StateTransitionResultFilter, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.displayName = 'proto.org.dash.platform.dapi.v0.StateTransitionResultFilter'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0 = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformFilterV0, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformFilterV0.displayName = 'proto.org.dash.platform.dapi.v0.PlatformFilterV0'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0 = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformEventV0, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformEventV0.displayName = 'proto.org.dash.platform.dapi.v0.PlatformEventV0'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.displayName = 'proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.displayName = 'proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.displayName = 'proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -6817,6 +7041,1964 @@ if (goog.DEBUG && !COMPILED) { proto.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSigners.displayName = 'proto.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSigners'; } +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.oneofGroups_ = [[1]]; + +/** + * @enum {number} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.VersionCase = { + VERSION_NOT_SET: 0, + V0: 1 +}; + +/** + * @return {proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.VersionCase} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.getVersionCase = function() { + return /** @type {proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.VersionCase} */(jspb.Message.computeOneofCase(this, proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.oneofGroups_[0])); +}; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.toObject = function(includeInstance, msg) { + var f, obj = { + v0: (f = msg.getV0()) && proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest; + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.deserializeBinaryFromReader); + msg.setV0(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getV0(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.serializeBinaryToWriter + ); + } +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.toObject = function(includeInstance, msg) { + var f, obj = { + filter: (f = msg.getFilter()) && proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0; + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.org.dash.platform.dapi.v0.PlatformFilterV0; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader); + msg.setFilter(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getFilter(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter + ); + } +}; + + +/** + * optional PlatformFilterV0 filter = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformFilterV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.getFilter = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformFilterV0} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0, 1)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformFilterV0|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.setFilter = function(value) { + return jspb.Message.setWrapperField(this, 1, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.clearFilter = function() { + return this.setFilter(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.hasFilter = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional PlatformSubscriptionRequestV0 v0 = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.getV0 = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0, 1)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.setV0 = function(value) { + return jspb.Message.setOneofWrapperField(this, 1, proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.clearV0 = function() { + return this.setV0(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.hasV0 = function() { + return jspb.Message.getField(this, 1) != null; +}; + + + +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.oneofGroups_ = [[1]]; + +/** + * @enum {number} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.VersionCase = { + VERSION_NOT_SET: 0, + V0: 1 +}; + +/** + * @return {proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.VersionCase} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.getVersionCase = function() { + return /** @type {proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.VersionCase} */(jspb.Message.computeOneofCase(this, proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.oneofGroups_[0])); +}; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.toObject = function(includeInstance, msg) { + var f, obj = { + v0: (f = msg.getV0()) && proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse; + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.deserializeBinaryFromReader); + msg.setV0(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getV0(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.serializeBinaryToWriter + ); + } +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.toObject = function(includeInstance, msg) { + var f, obj = { + clientSubscriptionId: jspb.Message.getFieldWithDefault(msg, 1, ""), + event: (f = msg.getEvent()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0; + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setClientSubscriptionId(value); + break; + case 2: + var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.deserializeBinaryFromReader); + msg.setEvent(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getClientSubscriptionId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getEvent(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.org.dash.platform.dapi.v0.PlatformEventV0.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string client_subscription_id = 1; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.getClientSubscriptionId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.setClientSubscriptionId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional PlatformEventV0 event = 2; + * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.getEvent = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformEventV0} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformEventV0, 2)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformEventV0|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.setEvent = function(value) { + return jspb.Message.setWrapperField(this, 2, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.clearEvent = function() { + return this.setEvent(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.hasEvent = function() { + return jspb.Message.getField(this, 2) != null; +}; + + +/** + * optional PlatformSubscriptionResponseV0 v0 = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.getV0 = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0, 1)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.setV0 = function(value) { + return jspb.Message.setOneofWrapperField(this, 1, proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.clearV0 = function() { + return this.setV0(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.hasV0 = function() { + return jspb.Message.getField(this, 1) != null; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject = function(includeInstance, msg) { + var f, obj = { + txHash: msg.getTxHash_asB64() + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.StateTransitionResultFilter; + return proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {!Uint8Array} */ (reader.readBytes()); + msg.setTxHash(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = /** @type {!(string|Uint8Array)} */ (jspb.Message.getField(message, 1)); + if (f != null) { + writer.writeBytes( + 1, + f + ); + } +}; + + +/** + * optional bytes tx_hash = 1; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.getTxHash = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * optional bytes tx_hash = 1; + * This is a type-conversion wrapper around `getTxHash()` + * @return {string} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.getTxHash_asB64 = function() { + return /** @type {string} */ (jspb.Message.bytesAsB64( + this.getTxHash())); +}; + + +/** + * optional bytes tx_hash = 1; + * Note that Uint8Array is not supported on all browsers. + * @see http://caniuse.com/Uint8Array + * This is a type-conversion wrapper around `getTxHash()` + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.getTxHash_asU8 = function() { + return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8( + this.getTxHash())); +}; + + +/** + * @param {!(string|Uint8Array)} value + * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} returns this + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.setTxHash = function(value) { + return jspb.Message.setField(this, 1, value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} returns this + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.clearTxHash = function() { + return jspb.Message.setField(this, 1, undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.hasTxHash = function() { + return jspb.Message.getField(this, 1) != null; +}; + + + +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_ = [[1,2,3]]; + +/** + * @enum {number} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase = { + KIND_NOT_SET: 0, + ALL: 1, + BLOCK_COMMITTED: 2, + STATE_TRANSITION_RESULT: 3 +}; + +/** + * @return {proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getKindCase = function() { + return /** @type {proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase} */(jspb.Message.computeOneofCase(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0])); +}; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject = function(includeInstance, msg) { + var f, obj = { + all: jspb.Message.getBooleanFieldWithDefault(msg, 1, false), + blockCommitted: jspb.Message.getBooleanFieldWithDefault(msg, 2, false), + stateTransitionResult: (f = msg.getStateTransitionResult()) && proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformFilterV0; + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setAll(value); + break; + case 2: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setBlockCommitted(value); + break; + case 3: + var value = new proto.org.dash.platform.dapi.v0.StateTransitionResultFilter; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFromReader); + msg.setStateTransitionResult(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = /** @type {boolean} */ (jspb.Message.getField(message, 1)); + if (f != null) { + writer.writeBool( + 1, + f + ); + } + f = /** @type {boolean} */ (jspb.Message.getField(message, 2)); + if (f != null) { + writer.writeBool( + 2, + f + ); + } + f = message.getStateTransitionResult(); + if (f != null) { + writer.writeMessage( + 3, + f, + proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.serializeBinaryToWriter + ); + } +}; + + +/** + * optional bool all = 1; + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getAll = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.setAll = function(value) { + return jspb.Message.setOneofField(this, 1, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.clearAll = function() { + return jspb.Message.setOneofField(this, 1, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.hasAll = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional bool block_committed = 2; + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getBlockCommitted = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.setBlockCommitted = function(value) { + return jspb.Message.setOneofField(this, 2, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.clearBlockCommitted = function() { + return jspb.Message.setOneofField(this, 2, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.hasBlockCommitted = function() { + return jspb.Message.getField(this, 2) != null; +}; + + +/** + * optional StateTransitionResultFilter state_transition_result = 3; + * @return {?proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getStateTransitionResult = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.StateTransitionResultFilter, 3)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.StateTransitionResultFilter|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.setStateTransitionResult = function(value) { + return jspb.Message.setOneofWrapperField(this, 3, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.clearStateTransitionResult = function() { + return this.setStateTransitionResult(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.hasStateTransitionResult = function() { + return jspb.Message.getField(this, 3) != null; +}; + + + +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_ = [[1,2]]; + +/** + * @enum {number} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase = { + EVENT_NOT_SET: 0, + BLOCK_COMMITTED: 1, + STATE_TRANSITION_FINALIZED: 2 +}; + +/** + * @return {proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.getEventCase = function() { + return /** @type {proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase} */(jspb.Message.computeOneofCase(this, proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_[0])); +}; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformEventV0.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.toObject = function(includeInstance, msg) { + var f, obj = { + blockCommitted: (f = msg.getBlockCommitted()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.toObject(includeInstance, f), + stateTransitionFinalized: (f = msg.getStateTransitionFinalized()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformEventV0; + return proto.org.dash.platform.dapi.v0.PlatformEventV0.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.deserializeBinaryFromReader); + msg.setBlockCommitted(value); + break; + case 2: + var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.deserializeBinaryFromReader); + msg.setStateTransitionFinalized(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformEventV0.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getBlockCommitted(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.serializeBinaryToWriter + ); + } + f = message.getStateTransitionFinalized(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.serializeBinaryToWriter + ); + } +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.toObject = function(includeInstance, msg) { + var f, obj = { + height: jspb.Message.getFieldWithDefault(msg, 1, "0"), + timeMs: jspb.Message.getFieldWithDefault(msg, 2, "0"), + blockIdHash: msg.getBlockIdHash_asB64() + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata; + return proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setHeight(value); + break; + case 2: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setTimeMs(value); + break; + case 3: + var value = /** @type {!Uint8Array} */ (reader.readBytes()); + msg.setBlockIdHash(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getHeight(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 1, + f + ); + } + f = message.getTimeMs(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 2, + f + ); + } + f = message.getBlockIdHash_asU8(); + if (f.length > 0) { + writer.writeBytes( + 3, + f + ); + } +}; + + +/** + * optional uint64 height = 1; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.getHeight = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "0")); +}; + + +/** + * @param {string} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.setHeight = function(value) { + return jspb.Message.setProto3StringIntField(this, 1, value); +}; + + +/** + * optional uint64 time_ms = 2; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.getTimeMs = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "0")); +}; + + +/** + * @param {string} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.setTimeMs = function(value) { + return jspb.Message.setProto3StringIntField(this, 2, value); +}; + + +/** + * optional bytes block_id_hash = 3; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.getBlockIdHash = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * optional bytes block_id_hash = 3; + * This is a type-conversion wrapper around `getBlockIdHash()` + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.getBlockIdHash_asB64 = function() { + return /** @type {string} */ (jspb.Message.bytesAsB64( + this.getBlockIdHash())); +}; + + +/** + * optional bytes block_id_hash = 3; + * Note that Uint8Array is not supported on all browsers. + * @see http://caniuse.com/Uint8Array + * This is a type-conversion wrapper around `getBlockIdHash()` + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.getBlockIdHash_asU8 = function() { + return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8( + this.getBlockIdHash())); +}; + + +/** + * @param {!(string|Uint8Array)} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.setBlockIdHash = function(value) { + return jspb.Message.setProto3BytesField(this, 3, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.toObject = function(includeInstance, msg) { + var f, obj = { + meta: (f = msg.getMeta()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.toObject(includeInstance, f), + txCount: jspb.Message.getFieldWithDefault(msg, 2, 0) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted; + return proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.deserializeBinaryFromReader); + msg.setMeta(value); + break; + case 2: + var value = /** @type {number} */ (reader.readUint32()); + msg.setTxCount(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getMeta(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.serializeBinaryToWriter + ); + } + f = message.getTxCount(); + if (f !== 0) { + writer.writeUint32( + 2, + f + ); + } +}; + + +/** + * optional BlockMetadata meta = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.getMeta = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata, 1)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.setMeta = function(value) { + return jspb.Message.setWrapperField(this, 1, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.clearMeta = function() { + return this.setMeta(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.hasMeta = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional uint32 tx_count = 2; + * @return {number} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.getTxCount = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.setTxCount = function(value) { + return jspb.Message.setProto3IntField(this, 2, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.toObject = function(includeInstance, msg) { + var f, obj = { + meta: (f = msg.getMeta()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.toObject(includeInstance, f), + txHash: msg.getTxHash_asB64() + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized; + return proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.deserializeBinaryFromReader); + msg.setMeta(value); + break; + case 2: + var value = /** @type {!Uint8Array} */ (reader.readBytes()); + msg.setTxHash(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getMeta(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.serializeBinaryToWriter + ); + } + f = message.getTxHash_asU8(); + if (f.length > 0) { + writer.writeBytes( + 2, + f + ); + } +}; + + +/** + * optional BlockMetadata meta = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.getMeta = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata, 1)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.setMeta = function(value) { + return jspb.Message.setWrapperField(this, 1, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.clearMeta = function() { + return this.setMeta(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.hasMeta = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional bytes tx_hash = 2; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.getTxHash = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * optional bytes tx_hash = 2; + * This is a type-conversion wrapper around `getTxHash()` + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.getTxHash_asB64 = function() { + return /** @type {string} */ (jspb.Message.bytesAsB64( + this.getTxHash())); +}; + + +/** + * optional bytes tx_hash = 2; + * Note that Uint8Array is not supported on all browsers. + * @see http://caniuse.com/Uint8Array + * This is a type-conversion wrapper around `getTxHash()` + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.getTxHash_asU8 = function() { + return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8( + this.getTxHash())); +}; + + +/** + * @param {!(string|Uint8Array)} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.setTxHash = function(value) { + return jspb.Message.setProto3BytesField(this, 2, value); +}; + + +/** + * optional BlockCommitted block_committed = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.getBlockCommitted = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted, 1)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.setBlockCommitted = function(value) { + return jspb.Message.setOneofWrapperField(this, 1, proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.clearBlockCommitted = function() { + return this.setBlockCommitted(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.hasBlockCommitted = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional StateTransitionFinalized state_transition_finalized = 2; + * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.getStateTransitionFinalized = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized, 2)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.setStateTransitionFinalized = function(value) { + return jspb.Message.setOneofWrapperField(this, 2, proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.clearStateTransitionFinalized = function() { + return this.setStateTransitionFinalized(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.hasStateTransitionFinalized = function() { + return jspb.Message.getField(this, 2) != null; +}; + + + if (jspb.Message.GENERATE_TO_OBJECT) { diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h index 261fab62628..225dd6708ba 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h @@ -228,12 +228,20 @@ CF_EXTERN_C_BEGIN @class GetVotePollsByEndDateResponse_GetVotePollsByEndDateResponseV0_SerializedVotePollsByTimestamp; @class GetVotePollsByEndDateResponse_GetVotePollsByEndDateResponseV0_SerializedVotePollsByTimestamps; @class KeyRequestType; +@class PlatformEventV0; +@class PlatformEventV0_BlockCommitted; +@class PlatformEventV0_BlockMetadata; +@class PlatformEventV0_StateTransitionFinalized; +@class PlatformFilterV0; +@class PlatformSubscriptionRequest_PlatformSubscriptionRequestV0; +@class PlatformSubscriptionResponse_PlatformSubscriptionResponseV0; @class Proof; @class ResponseMetadata; @class SearchKey; @class SecurityLevelMap; @class SpecificKeys; @class StateTransitionBroadcastError; +@class StateTransitionResultFilter; @class WaitForStateTransitionResultRequest_WaitForStateTransitionResultRequestV0; @class WaitForStateTransitionResultResponse_WaitForStateTransitionResultResponseV0; @@ -441,6 +449,222 @@ BOOL GetGroupActionSignersRequest_ActionStatus_IsValidValue(int32_t value); GPB_FINAL @interface PlatformRoot : GPBRootObject @end +#pragma mark - PlatformSubscriptionRequest + +typedef GPB_ENUM(PlatformSubscriptionRequest_FieldNumber) { + PlatformSubscriptionRequest_FieldNumber_V0 = 1, +}; + +typedef GPB_ENUM(PlatformSubscriptionRequest_Version_OneOfCase) { + PlatformSubscriptionRequest_Version_OneOfCase_GPBUnsetOneOfCase = 0, + PlatformSubscriptionRequest_Version_OneOfCase_V0 = 1, +}; + +/** + * Platform events subscription (v0) + **/ +GPB_FINAL @interface PlatformSubscriptionRequest : GPBMessage + +@property(nonatomic, readonly) PlatformSubscriptionRequest_Version_OneOfCase versionOneOfCase; + +@property(nonatomic, readwrite, strong, null_resettable) PlatformSubscriptionRequest_PlatformSubscriptionRequestV0 *v0; + +@end + +/** + * Clears whatever value was set for the oneof 'version'. + **/ +void PlatformSubscriptionRequest_ClearVersionOneOfCase(PlatformSubscriptionRequest *message); + +#pragma mark - PlatformSubscriptionRequest_PlatformSubscriptionRequestV0 + +typedef GPB_ENUM(PlatformSubscriptionRequest_PlatformSubscriptionRequestV0_FieldNumber) { + PlatformSubscriptionRequest_PlatformSubscriptionRequestV0_FieldNumber_Filter = 1, +}; + +GPB_FINAL @interface PlatformSubscriptionRequest_PlatformSubscriptionRequestV0 : GPBMessage + +@property(nonatomic, readwrite, strong, null_resettable) PlatformFilterV0 *filter; +/** Test to see if @c filter has been set. */ +@property(nonatomic, readwrite) BOOL hasFilter; + +@end + +#pragma mark - PlatformSubscriptionResponse + +typedef GPB_ENUM(PlatformSubscriptionResponse_FieldNumber) { + PlatformSubscriptionResponse_FieldNumber_V0 = 1, +}; + +typedef GPB_ENUM(PlatformSubscriptionResponse_Version_OneOfCase) { + PlatformSubscriptionResponse_Version_OneOfCase_GPBUnsetOneOfCase = 0, + PlatformSubscriptionResponse_Version_OneOfCase_V0 = 1, +}; + +GPB_FINAL @interface PlatformSubscriptionResponse : GPBMessage + +@property(nonatomic, readonly) PlatformSubscriptionResponse_Version_OneOfCase versionOneOfCase; + +@property(nonatomic, readwrite, strong, null_resettable) PlatformSubscriptionResponse_PlatformSubscriptionResponseV0 *v0; + +@end + +/** + * Clears whatever value was set for the oneof 'version'. + **/ +void PlatformSubscriptionResponse_ClearVersionOneOfCase(PlatformSubscriptionResponse *message); + +#pragma mark - PlatformSubscriptionResponse_PlatformSubscriptionResponseV0 + +typedef GPB_ENUM(PlatformSubscriptionResponse_PlatformSubscriptionResponseV0_FieldNumber) { + PlatformSubscriptionResponse_PlatformSubscriptionResponseV0_FieldNumber_ClientSubscriptionId = 1, + PlatformSubscriptionResponse_PlatformSubscriptionResponseV0_FieldNumber_Event = 2, +}; + +GPB_FINAL @interface PlatformSubscriptionResponse_PlatformSubscriptionResponseV0 : GPBMessage + +@property(nonatomic, readwrite, copy, null_resettable) NSString *clientSubscriptionId; + +@property(nonatomic, readwrite, strong, null_resettable) PlatformEventV0 *event; +/** Test to see if @c event has been set. */ +@property(nonatomic, readwrite) BOOL hasEvent; + +@end + +#pragma mark - StateTransitionResultFilter + +typedef GPB_ENUM(StateTransitionResultFilter_FieldNumber) { + StateTransitionResultFilter_FieldNumber_TxHash = 1, +}; + +/** + * Initial placeholder filter and event to be refined during integration + * Filter for StateTransitionResult events + **/ +GPB_FINAL @interface StateTransitionResultFilter : GPBMessage + +/** When set, only match StateTransitionResult events for this tx hash. */ +@property(nonatomic, readwrite, copy, null_resettable) NSData *txHash; +/** Test to see if @c txHash has been set. */ +@property(nonatomic, readwrite) BOOL hasTxHash; + +@end + +#pragma mark - PlatformFilterV0 + +typedef GPB_ENUM(PlatformFilterV0_FieldNumber) { + PlatformFilterV0_FieldNumber_All = 1, + PlatformFilterV0_FieldNumber_BlockCommitted = 2, + PlatformFilterV0_FieldNumber_StateTransitionResult = 3, +}; + +typedef GPB_ENUM(PlatformFilterV0_Kind_OneOfCase) { + PlatformFilterV0_Kind_OneOfCase_GPBUnsetOneOfCase = 0, + PlatformFilterV0_Kind_OneOfCase_All = 1, + PlatformFilterV0_Kind_OneOfCase_BlockCommitted = 2, + PlatformFilterV0_Kind_OneOfCase_StateTransitionResult = 3, +}; + +GPB_FINAL @interface PlatformFilterV0 : GPBMessage + +@property(nonatomic, readonly) PlatformFilterV0_Kind_OneOfCase kindOneOfCase; + +/** subscribe to all platform events */ +@property(nonatomic, readwrite) BOOL all; + +/** subscribe to BlockCommitted events only */ +@property(nonatomic, readwrite) BOOL blockCommitted; + +/** subscribe to StateTransitionResult events (optionally filtered by */ +@property(nonatomic, readwrite, strong, null_resettable) StateTransitionResultFilter *stateTransitionResult; + +@end + +/** + * Clears whatever value was set for the oneof 'kind'. + **/ +void PlatformFilterV0_ClearKindOneOfCase(PlatformFilterV0 *message); + +#pragma mark - PlatformEventV0 + +typedef GPB_ENUM(PlatformEventV0_FieldNumber) { + PlatformEventV0_FieldNumber_BlockCommitted = 1, + PlatformEventV0_FieldNumber_StateTransitionFinalized = 2, +}; + +typedef GPB_ENUM(PlatformEventV0_Event_OneOfCase) { + PlatformEventV0_Event_OneOfCase_GPBUnsetOneOfCase = 0, + PlatformEventV0_Event_OneOfCase_BlockCommitted = 1, + PlatformEventV0_Event_OneOfCase_StateTransitionFinalized = 2, +}; + +GPB_FINAL @interface PlatformEventV0 : GPBMessage + +@property(nonatomic, readonly) PlatformEventV0_Event_OneOfCase eventOneOfCase; + +@property(nonatomic, readwrite, strong, null_resettable) PlatformEventV0_BlockCommitted *blockCommitted; + +@property(nonatomic, readwrite, strong, null_resettable) PlatformEventV0_StateTransitionFinalized *stateTransitionFinalized; + +@end + +/** + * Clears whatever value was set for the oneof 'event'. + **/ +void PlatformEventV0_ClearEventOneOfCase(PlatformEventV0 *message); + +#pragma mark - PlatformEventV0_BlockMetadata + +typedef GPB_ENUM(PlatformEventV0_BlockMetadata_FieldNumber) { + PlatformEventV0_BlockMetadata_FieldNumber_Height = 1, + PlatformEventV0_BlockMetadata_FieldNumber_TimeMs = 2, + PlatformEventV0_BlockMetadata_FieldNumber_BlockIdHash = 3, +}; + +GPB_FINAL @interface PlatformEventV0_BlockMetadata : GPBMessage + +@property(nonatomic, readwrite) uint64_t height; + +@property(nonatomic, readwrite) uint64_t timeMs; + +@property(nonatomic, readwrite, copy, null_resettable) NSData *blockIdHash; + +@end + +#pragma mark - PlatformEventV0_BlockCommitted + +typedef GPB_ENUM(PlatformEventV0_BlockCommitted_FieldNumber) { + PlatformEventV0_BlockCommitted_FieldNumber_Meta = 1, + PlatformEventV0_BlockCommitted_FieldNumber_TxCount = 2, +}; + +GPB_FINAL @interface PlatformEventV0_BlockCommitted : GPBMessage + +@property(nonatomic, readwrite, strong, null_resettable) PlatformEventV0_BlockMetadata *meta; +/** Test to see if @c meta has been set. */ +@property(nonatomic, readwrite) BOOL hasMeta; + +@property(nonatomic, readwrite) uint32_t txCount; + +@end + +#pragma mark - PlatformEventV0_StateTransitionFinalized + +typedef GPB_ENUM(PlatformEventV0_StateTransitionFinalized_FieldNumber) { + PlatformEventV0_StateTransitionFinalized_FieldNumber_Meta = 1, + PlatformEventV0_StateTransitionFinalized_FieldNumber_TxHash = 2, +}; + +GPB_FINAL @interface PlatformEventV0_StateTransitionFinalized : GPBMessage + +@property(nonatomic, readwrite, strong, null_resettable) PlatformEventV0_BlockMetadata *meta; +/** Test to see if @c meta has been set. */ +@property(nonatomic, readwrite) BOOL hasMeta; + +@property(nonatomic, readwrite, copy, null_resettable) NSData *txHash; + +@end + #pragma mark - Proof typedef GPB_ENUM(Proof_FieldNumber) { @@ -3362,7 +3586,7 @@ GPB_FINAL @interface GetFinalizedEpochInfosResponse_GetFinalizedEpochInfosRespon /** The actual finalized information about the requested epochs */ @property(nonatomic, readwrite, strong, null_resettable) GetFinalizedEpochInfosResponse_GetFinalizedEpochInfosResponseV0_FinalizedEpochInfos *epochs; -/** Cryptographic proof of the finalized epoch information, if requested */ +/** Cryptographic proof of the finalized epoch */ @property(nonatomic, readwrite, strong, null_resettable) Proof *proof; /** Metadata about the blockchain state */ @@ -3384,7 +3608,8 @@ typedef GPB_ENUM(GetFinalizedEpochInfosResponse_GetFinalizedEpochInfosResponseV0 }; /** - * FinalizedEpochInfos holds a collection of finalized epoch information entries + * FinalizedEpochInfos holds a collection of finalized epoch information + * entries **/ GPB_FINAL @interface GetFinalizedEpochInfosResponse_GetFinalizedEpochInfosResponseV0_FinalizedEpochInfos : GPBMessage @@ -6438,7 +6663,10 @@ GPB_FINAL @interface GetTokenPerpetualDistributionLastClaimRequest_GetTokenPerpe /** 32‑byte token identifier */ @property(nonatomic, readwrite, copy, null_resettable) NSData *tokenId; -/** This should be set if you wish to get back the last claim info as a specific type */ +/** + * This should be set if you wish to get back the last claim info as a + * specific type + **/ @property(nonatomic, readwrite, strong, null_resettable) GetTokenPerpetualDistributionLastClaimRequest_ContractTokenInfo *contractInfo; /** Test to see if @c contractInfo has been set. */ @property(nonatomic, readwrite) BOOL hasContractInfo; diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m index 580648e4ddc..1391e171333 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m @@ -317,12 +317,22 @@ GPBObjCClassDeclaration(GetVotePollsByEndDateResponse_GetVotePollsByEndDateResponseV0_SerializedVotePollsByTimestamp); GPBObjCClassDeclaration(GetVotePollsByEndDateResponse_GetVotePollsByEndDateResponseV0_SerializedVotePollsByTimestamps); GPBObjCClassDeclaration(KeyRequestType); +GPBObjCClassDeclaration(PlatformEventV0); +GPBObjCClassDeclaration(PlatformEventV0_BlockCommitted); +GPBObjCClassDeclaration(PlatformEventV0_BlockMetadata); +GPBObjCClassDeclaration(PlatformEventV0_StateTransitionFinalized); +GPBObjCClassDeclaration(PlatformFilterV0); +GPBObjCClassDeclaration(PlatformSubscriptionRequest); +GPBObjCClassDeclaration(PlatformSubscriptionRequest_PlatformSubscriptionRequestV0); +GPBObjCClassDeclaration(PlatformSubscriptionResponse); +GPBObjCClassDeclaration(PlatformSubscriptionResponse_PlatformSubscriptionResponseV0); GPBObjCClassDeclaration(Proof); GPBObjCClassDeclaration(ResponseMetadata); GPBObjCClassDeclaration(SearchKey); GPBObjCClassDeclaration(SecurityLevelMap); GPBObjCClassDeclaration(SpecificKeys); GPBObjCClassDeclaration(StateTransitionBroadcastError); +GPBObjCClassDeclaration(StateTransitionResultFilter); GPBObjCClassDeclaration(WaitForStateTransitionResultRequest); GPBObjCClassDeclaration(WaitForStateTransitionResultRequest_WaitForStateTransitionResultRequestV0); GPBObjCClassDeclaration(WaitForStateTransitionResultResponse); @@ -393,6 +403,595 @@ BOOL KeyPurpose_IsValidValue(int32_t value__) { } } +#pragma mark - PlatformSubscriptionRequest + +@implementation PlatformSubscriptionRequest + +@dynamic versionOneOfCase; +@dynamic v0; + +typedef struct PlatformSubscriptionRequest__storage_ { + uint32_t _has_storage_[2]; + PlatformSubscriptionRequest_PlatformSubscriptionRequestV0 *v0; +} PlatformSubscriptionRequest__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + static GPBMessageFieldDescription fields[] = { + { + .name = "v0", + .dataTypeSpecific.clazz = GPBObjCClass(PlatformSubscriptionRequest_PlatformSubscriptionRequestV0), + .number = PlatformSubscriptionRequest_FieldNumber_V0, + .hasIndex = -1, + .offset = (uint32_t)offsetof(PlatformSubscriptionRequest__storage_, v0), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeMessage, + }, + }; + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformSubscriptionRequest class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:fields + fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) + storageSize:sizeof(PlatformSubscriptionRequest__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + static const char *oneofs[] = { + "version", + }; + [localDescriptor setupOneofs:oneofs + count:(uint32_t)(sizeof(oneofs) / sizeof(char*)) + firstHasIndex:-1]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + +void PlatformSubscriptionRequest_ClearVersionOneOfCase(PlatformSubscriptionRequest *message) { + GPBDescriptor *descriptor = [PlatformSubscriptionRequest descriptor]; + GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0]; + GPBClearOneof(message, oneof); +} +#pragma mark - PlatformSubscriptionRequest_PlatformSubscriptionRequestV0 + +@implementation PlatformSubscriptionRequest_PlatformSubscriptionRequestV0 + +@dynamic hasFilter, filter; + +typedef struct PlatformSubscriptionRequest_PlatformSubscriptionRequestV0__storage_ { + uint32_t _has_storage_[1]; + PlatformFilterV0 *filter; +} PlatformSubscriptionRequest_PlatformSubscriptionRequestV0__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + static GPBMessageFieldDescription fields[] = { + { + .name = "filter", + .dataTypeSpecific.clazz = GPBObjCClass(PlatformFilterV0), + .number = PlatformSubscriptionRequest_PlatformSubscriptionRequestV0_FieldNumber_Filter, + .hasIndex = 0, + .offset = (uint32_t)offsetof(PlatformSubscriptionRequest_PlatformSubscriptionRequestV0__storage_, filter), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeMessage, + }, + }; + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformSubscriptionRequest_PlatformSubscriptionRequestV0 class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:fields + fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) + storageSize:sizeof(PlatformSubscriptionRequest_PlatformSubscriptionRequestV0__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + [localDescriptor setupContainingMessageClass:GPBObjCClass(PlatformSubscriptionRequest)]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + +#pragma mark - PlatformSubscriptionResponse + +@implementation PlatformSubscriptionResponse + +@dynamic versionOneOfCase; +@dynamic v0; + +typedef struct PlatformSubscriptionResponse__storage_ { + uint32_t _has_storage_[2]; + PlatformSubscriptionResponse_PlatformSubscriptionResponseV0 *v0; +} PlatformSubscriptionResponse__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + static GPBMessageFieldDescription fields[] = { + { + .name = "v0", + .dataTypeSpecific.clazz = GPBObjCClass(PlatformSubscriptionResponse_PlatformSubscriptionResponseV0), + .number = PlatformSubscriptionResponse_FieldNumber_V0, + .hasIndex = -1, + .offset = (uint32_t)offsetof(PlatformSubscriptionResponse__storage_, v0), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeMessage, + }, + }; + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformSubscriptionResponse class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:fields + fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) + storageSize:sizeof(PlatformSubscriptionResponse__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + static const char *oneofs[] = { + "version", + }; + [localDescriptor setupOneofs:oneofs + count:(uint32_t)(sizeof(oneofs) / sizeof(char*)) + firstHasIndex:-1]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + +void PlatformSubscriptionResponse_ClearVersionOneOfCase(PlatformSubscriptionResponse *message) { + GPBDescriptor *descriptor = [PlatformSubscriptionResponse descriptor]; + GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0]; + GPBClearOneof(message, oneof); +} +#pragma mark - PlatformSubscriptionResponse_PlatformSubscriptionResponseV0 + +@implementation PlatformSubscriptionResponse_PlatformSubscriptionResponseV0 + +@dynamic clientSubscriptionId; +@dynamic hasEvent, event; + +typedef struct PlatformSubscriptionResponse_PlatformSubscriptionResponseV0__storage_ { + uint32_t _has_storage_[1]; + NSString *clientSubscriptionId; + PlatformEventV0 *event; +} PlatformSubscriptionResponse_PlatformSubscriptionResponseV0__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + static GPBMessageFieldDescription fields[] = { + { + .name = "clientSubscriptionId", + .dataTypeSpecific.clazz = Nil, + .number = PlatformSubscriptionResponse_PlatformSubscriptionResponseV0_FieldNumber_ClientSubscriptionId, + .hasIndex = 0, + .offset = (uint32_t)offsetof(PlatformSubscriptionResponse_PlatformSubscriptionResponseV0__storage_, clientSubscriptionId), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), + .dataType = GPBDataTypeString, + }, + { + .name = "event", + .dataTypeSpecific.clazz = GPBObjCClass(PlatformEventV0), + .number = PlatformSubscriptionResponse_PlatformSubscriptionResponseV0_FieldNumber_Event, + .hasIndex = 1, + .offset = (uint32_t)offsetof(PlatformSubscriptionResponse_PlatformSubscriptionResponseV0__storage_, event), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeMessage, + }, + }; + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformSubscriptionResponse_PlatformSubscriptionResponseV0 class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:fields + fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) + storageSize:sizeof(PlatformSubscriptionResponse_PlatformSubscriptionResponseV0__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + [localDescriptor setupContainingMessageClass:GPBObjCClass(PlatformSubscriptionResponse)]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + +#pragma mark - StateTransitionResultFilter + +@implementation StateTransitionResultFilter + +@dynamic hasTxHash, txHash; + +typedef struct StateTransitionResultFilter__storage_ { + uint32_t _has_storage_[1]; + NSData *txHash; +} StateTransitionResultFilter__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + static GPBMessageFieldDescription fields[] = { + { + .name = "txHash", + .dataTypeSpecific.clazz = Nil, + .number = StateTransitionResultFilter_FieldNumber_TxHash, + .hasIndex = 0, + .offset = (uint32_t)offsetof(StateTransitionResultFilter__storage_, txHash), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeBytes, + }, + }; + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[StateTransitionResultFilter class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:fields + fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) + storageSize:sizeof(StateTransitionResultFilter__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + +#pragma mark - PlatformFilterV0 + +@implementation PlatformFilterV0 + +@dynamic kindOneOfCase; +@dynamic all; +@dynamic blockCommitted; +@dynamic stateTransitionResult; + +typedef struct PlatformFilterV0__storage_ { + uint32_t _has_storage_[2]; + StateTransitionResultFilter *stateTransitionResult; +} PlatformFilterV0__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + static GPBMessageFieldDescription fields[] = { + { + .name = "all", + .dataTypeSpecific.clazz = Nil, + .number = PlatformFilterV0_FieldNumber_All, + .hasIndex = -1, + .offset = 0, // Stored in _has_storage_ to save space. + .flags = GPBFieldOptional, + .dataType = GPBDataTypeBool, + }, + { + .name = "blockCommitted", + .dataTypeSpecific.clazz = Nil, + .number = PlatformFilterV0_FieldNumber_BlockCommitted, + .hasIndex = -1, + .offset = 1, // Stored in _has_storage_ to save space. + .flags = GPBFieldOptional, + .dataType = GPBDataTypeBool, + }, + { + .name = "stateTransitionResult", + .dataTypeSpecific.clazz = GPBObjCClass(StateTransitionResultFilter), + .number = PlatformFilterV0_FieldNumber_StateTransitionResult, + .hasIndex = -1, + .offset = (uint32_t)offsetof(PlatformFilterV0__storage_, stateTransitionResult), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeMessage, + }, + }; + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformFilterV0 class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:fields + fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) + storageSize:sizeof(PlatformFilterV0__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + static const char *oneofs[] = { + "kind", + }; + [localDescriptor setupOneofs:oneofs + count:(uint32_t)(sizeof(oneofs) / sizeof(char*)) + firstHasIndex:-1]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + +void PlatformFilterV0_ClearKindOneOfCase(PlatformFilterV0 *message) { + GPBDescriptor *descriptor = [PlatformFilterV0 descriptor]; + GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0]; + GPBClearOneof(message, oneof); +} +#pragma mark - PlatformEventV0 + +@implementation PlatformEventV0 + +@dynamic eventOneOfCase; +@dynamic blockCommitted; +@dynamic stateTransitionFinalized; + +typedef struct PlatformEventV0__storage_ { + uint32_t _has_storage_[2]; + PlatformEventV0_BlockCommitted *blockCommitted; + PlatformEventV0_StateTransitionFinalized *stateTransitionFinalized; +} PlatformEventV0__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + static GPBMessageFieldDescription fields[] = { + { + .name = "blockCommitted", + .dataTypeSpecific.clazz = GPBObjCClass(PlatformEventV0_BlockCommitted), + .number = PlatformEventV0_FieldNumber_BlockCommitted, + .hasIndex = -1, + .offset = (uint32_t)offsetof(PlatformEventV0__storage_, blockCommitted), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeMessage, + }, + { + .name = "stateTransitionFinalized", + .dataTypeSpecific.clazz = GPBObjCClass(PlatformEventV0_StateTransitionFinalized), + .number = PlatformEventV0_FieldNumber_StateTransitionFinalized, + .hasIndex = -1, + .offset = (uint32_t)offsetof(PlatformEventV0__storage_, stateTransitionFinalized), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeMessage, + }, + }; + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformEventV0 class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:fields + fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) + storageSize:sizeof(PlatformEventV0__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + static const char *oneofs[] = { + "event", + }; + [localDescriptor setupOneofs:oneofs + count:(uint32_t)(sizeof(oneofs) / sizeof(char*)) + firstHasIndex:-1]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + +void PlatformEventV0_ClearEventOneOfCase(PlatformEventV0 *message) { + GPBDescriptor *descriptor = [PlatformEventV0 descriptor]; + GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0]; + GPBClearOneof(message, oneof); +} +#pragma mark - PlatformEventV0_BlockMetadata + +@implementation PlatformEventV0_BlockMetadata + +@dynamic height; +@dynamic timeMs; +@dynamic blockIdHash; + +typedef struct PlatformEventV0_BlockMetadata__storage_ { + uint32_t _has_storage_[1]; + NSData *blockIdHash; + uint64_t height; + uint64_t timeMs; +} PlatformEventV0_BlockMetadata__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + static GPBMessageFieldDescription fields[] = { + { + .name = "height", + .dataTypeSpecific.clazz = Nil, + .number = PlatformEventV0_BlockMetadata_FieldNumber_Height, + .hasIndex = 0, + .offset = (uint32_t)offsetof(PlatformEventV0_BlockMetadata__storage_, height), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), + .dataType = GPBDataTypeUInt64, + }, + { + .name = "timeMs", + .dataTypeSpecific.clazz = Nil, + .number = PlatformEventV0_BlockMetadata_FieldNumber_TimeMs, + .hasIndex = 1, + .offset = (uint32_t)offsetof(PlatformEventV0_BlockMetadata__storage_, timeMs), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), + .dataType = GPBDataTypeUInt64, + }, + { + .name = "blockIdHash", + .dataTypeSpecific.clazz = Nil, + .number = PlatformEventV0_BlockMetadata_FieldNumber_BlockIdHash, + .hasIndex = 2, + .offset = (uint32_t)offsetof(PlatformEventV0_BlockMetadata__storage_, blockIdHash), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), + .dataType = GPBDataTypeBytes, + }, + }; + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformEventV0_BlockMetadata class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:fields + fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) + storageSize:sizeof(PlatformEventV0_BlockMetadata__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + [localDescriptor setupContainingMessageClass:GPBObjCClass(PlatformEventV0)]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + +#pragma mark - PlatformEventV0_BlockCommitted + +@implementation PlatformEventV0_BlockCommitted + +@dynamic hasMeta, meta; +@dynamic txCount; + +typedef struct PlatformEventV0_BlockCommitted__storage_ { + uint32_t _has_storage_[1]; + uint32_t txCount; + PlatformEventV0_BlockMetadata *meta; +} PlatformEventV0_BlockCommitted__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + static GPBMessageFieldDescription fields[] = { + { + .name = "meta", + .dataTypeSpecific.clazz = GPBObjCClass(PlatformEventV0_BlockMetadata), + .number = PlatformEventV0_BlockCommitted_FieldNumber_Meta, + .hasIndex = 0, + .offset = (uint32_t)offsetof(PlatformEventV0_BlockCommitted__storage_, meta), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeMessage, + }, + { + .name = "txCount", + .dataTypeSpecific.clazz = Nil, + .number = PlatformEventV0_BlockCommitted_FieldNumber_TxCount, + .hasIndex = 1, + .offset = (uint32_t)offsetof(PlatformEventV0_BlockCommitted__storage_, txCount), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), + .dataType = GPBDataTypeUInt32, + }, + }; + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformEventV0_BlockCommitted class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:fields + fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) + storageSize:sizeof(PlatformEventV0_BlockCommitted__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + [localDescriptor setupContainingMessageClass:GPBObjCClass(PlatformEventV0)]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + +#pragma mark - PlatformEventV0_StateTransitionFinalized + +@implementation PlatformEventV0_StateTransitionFinalized + +@dynamic hasMeta, meta; +@dynamic txHash; + +typedef struct PlatformEventV0_StateTransitionFinalized__storage_ { + uint32_t _has_storage_[1]; + PlatformEventV0_BlockMetadata *meta; + NSData *txHash; +} PlatformEventV0_StateTransitionFinalized__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + static GPBMessageFieldDescription fields[] = { + { + .name = "meta", + .dataTypeSpecific.clazz = GPBObjCClass(PlatformEventV0_BlockMetadata), + .number = PlatformEventV0_StateTransitionFinalized_FieldNumber_Meta, + .hasIndex = 0, + .offset = (uint32_t)offsetof(PlatformEventV0_StateTransitionFinalized__storage_, meta), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeMessage, + }, + { + .name = "txHash", + .dataTypeSpecific.clazz = Nil, + .number = PlatformEventV0_StateTransitionFinalized_FieldNumber_TxHash, + .hasIndex = 1, + .offset = (uint32_t)offsetof(PlatformEventV0_StateTransitionFinalized__storage_, txHash), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), + .dataType = GPBDataTypeBytes, + }, + }; + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformEventV0_StateTransitionFinalized class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:fields + fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) + storageSize:sizeof(PlatformEventV0_StateTransitionFinalized__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + [localDescriptor setupContainingMessageClass:GPBObjCClass(PlatformEventV0)]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + #pragma mark - Proof @implementation Proof diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h index 253f5abe1d1..b2655bceda4 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h @@ -105,6 +105,8 @@ @class GetTotalCreditsInPlatformResponse; @class GetVotePollsByEndDateRequest; @class GetVotePollsByEndDateResponse; +@class PlatformSubscriptionRequest; +@class PlatformSubscriptionResponse; @class WaitForStateTransitionResultRequest; @class WaitForStateTransitionResultResponse; @@ -340,6 +342,13 @@ NS_ASSUME_NONNULL_BEGIN - (GRPCUnaryProtoCall *)getGroupActionSignersWithMessage:(GetGroupActionSignersRequest *)message responseHandler:(id)handler callOptions:(GRPCCallOptions *_Nullable)callOptions; +#pragma mark SubscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse) + +/** + * Bi-directional stream for multiplexed platform events subscriptions + */ +- (GRPCUnaryProtoCall *)subscribePlatformEventsWithMessage:(PlatformSubscriptionRequest *)message responseHandler:(id)handler callOptions:(GRPCCallOptions *_Nullable)callOptions; + @end /** @@ -727,6 +736,23 @@ NS_ASSUME_NONNULL_BEGIN - (GRPCProtoCall *)RPCTogetGroupActionSignersWithRequest:(GetGroupActionSignersRequest *)request handler:(void(^)(GetGroupActionSignersResponse *_Nullable response, NSError *_Nullable error))handler; +#pragma mark SubscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse) + +/** + * Bi-directional stream for multiplexed platform events subscriptions + * + * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended. + */ +- (void)subscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)request eventHandler:(void(^)(BOOL done, PlatformSubscriptionResponse *_Nullable response, NSError *_Nullable error))eventHandler; + +/** + * Bi-directional stream for multiplexed platform events subscriptions + * + * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended. + */ +- (GRPCProtoCall *)RPCToSubscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)request eventHandler:(void(^)(BOOL done, PlatformSubscriptionResponse *_Nullable response, NSError *_Nullable error))eventHandler; + + @end diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m index 8b57e69c3ac..ac2bf5e6196 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m @@ -1075,5 +1075,38 @@ - (GRPCUnaryProtoCall *)getGroupActionSignersWithMessage:(GetGroupActionSignersR responseClass:[GetGroupActionSignersResponse class]]; } +#pragma mark SubscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse) + +/** + * Bi-directional stream for multiplexed platform events subscriptions + * + * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended. + */ +- (void)subscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)request eventHandler:(void(^)(BOOL done, PlatformSubscriptionResponse *_Nullable response, NSError *_Nullable error))eventHandler{ + [[self RPCToSubscribePlatformEventsWithRequest:request eventHandler:eventHandler] start]; +} +// Returns a not-yet-started RPC object. +/** + * Bi-directional stream for multiplexed platform events subscriptions + * + * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended. + */ +- (GRPCProtoCall *)RPCToSubscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)request eventHandler:(void(^)(BOOL done, PlatformSubscriptionResponse *_Nullable response, NSError *_Nullable error))eventHandler{ + return [self RPCToMethod:@"SubscribePlatformEvents" + requestsWriter:[GRXWriter writerWithValue:request] + responseClass:[PlatformSubscriptionResponse class] + responsesWriteable:[GRXWriteable writeableWithEventHandler:eventHandler]]; +} +/** + * Bi-directional stream for multiplexed platform events subscriptions + */ +- (GRPCUnaryProtoCall *)subscribePlatformEventsWithMessage:(PlatformSubscriptionRequest *)message responseHandler:(id)handler callOptions:(GRPCCallOptions *_Nullable)callOptions { + return [self RPCToMethod:@"SubscribePlatformEvents" + message:message + responseHandler:handler + callOptions:callOptions + responseClass:[PlatformSubscriptionResponse class]]; +} + @end #endif diff --git a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py index 5dfcceeb9e9..603c2464474 100644 --- a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py +++ b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py @@ -23,7 +23,7 @@ syntax='proto3', serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x0eplatform.proto\x12\x19org.dash.platform.dapi.v0\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x81\x01\n\x05Proof\x12\x15\n\rgrovedb_proof\x18\x01 \x01(\x0c\x12\x13\n\x0bquorum_hash\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\r\n\x05round\x18\x04 \x01(\r\x12\x15\n\rblock_id_hash\x18\x05 \x01(\x0c\x12\x13\n\x0bquorum_type\x18\x06 \x01(\r\"\x98\x01\n\x10ResponseMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12 \n\x18\x63ore_chain_locked_height\x18\x02 \x01(\r\x12\r\n\x05\x65poch\x18\x03 \x01(\r\x12\x13\n\x07time_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x18\n\x10protocol_version\x18\x05 \x01(\r\x12\x10\n\x08\x63hain_id\x18\x06 \x01(\t\"L\n\x1dStateTransitionBroadcastError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\";\n\x1f\x42roadcastStateTransitionRequest\x12\x18\n\x10state_transition\x18\x01 \x01(\x0c\"\"\n BroadcastStateTransitionResponse\"\xa4\x01\n\x12GetIdentityRequest\x12P\n\x02v0\x18\x01 \x01(\x0b\x32\x42.org.dash.platform.dapi.v0.GetIdentityRequest.GetIdentityRequestV0H\x00\x1a\x31\n\x14GetIdentityRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xc1\x01\n\x17GetIdentityNonceRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityNonceRequest.GetIdentityNonceRequestV0H\x00\x1a?\n\x19GetIdentityNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xf6\x01\n\x1fGetIdentityContractNonceRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest.GetIdentityContractNonceRequestV0H\x00\x1a\\\n!GetIdentityContractNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xc0\x01\n\x19GetIdentityBalanceRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetIdentityBalanceRequest.GetIdentityBalanceRequestV0H\x00\x1a\x38\n\x1bGetIdentityBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xec\x01\n$GetIdentityBalanceAndRevisionRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest.GetIdentityBalanceAndRevisionRequestV0H\x00\x1a\x43\n&GetIdentityBalanceAndRevisionRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9e\x02\n\x13GetIdentityResponse\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetIdentityResponse.GetIdentityResponseV0H\x00\x1a\xa7\x01\n\x15GetIdentityResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbc\x02\n\x18GetIdentityNonceResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetIdentityNonceResponse.GetIdentityNonceResponseV0H\x00\x1a\xb6\x01\n\x1aGetIdentityNonceResponseV0\x12\x1c\n\x0eidentity_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xe5\x02\n GetIdentityContractNonceResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse.GetIdentityContractNonceResponseV0H\x00\x1a\xc7\x01\n\"GetIdentityContractNonceResponseV0\x12%\n\x17identity_contract_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n\x1aGetIdentityBalanceResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetIdentityBalanceResponse.GetIdentityBalanceResponseV0H\x00\x1a\xb1\x01\n\x1cGetIdentityBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb1\x04\n%GetIdentityBalanceAndRevisionResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0H\x00\x1a\x84\x03\n\'GetIdentityBalanceAndRevisionResponseV0\x12\x9b\x01\n\x14\x62\x61lance_and_revision\x18\x01 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0.BalanceAndRevisionH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x12\x42\x61lanceAndRevision\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x14\n\x08revision\x18\x02 \x01(\x04\x42\x02\x30\x01\x42\x08\n\x06resultB\t\n\x07version\"\xd1\x01\n\x0eKeyRequestType\x12\x36\n\x08\x61ll_keys\x18\x01 \x01(\x0b\x32\".org.dash.platform.dapi.v0.AllKeysH\x00\x12@\n\rspecific_keys\x18\x02 \x01(\x0b\x32\'.org.dash.platform.dapi.v0.SpecificKeysH\x00\x12:\n\nsearch_key\x18\x03 \x01(\x0b\x32$.org.dash.platform.dapi.v0.SearchKeyH\x00\x42\t\n\x07request\"\t\n\x07\x41llKeys\"\x1f\n\x0cSpecificKeys\x12\x0f\n\x07key_ids\x18\x01 \x03(\r\"\xb6\x01\n\tSearchKey\x12I\n\x0bpurpose_map\x18\x01 \x03(\x0b\x32\x34.org.dash.platform.dapi.v0.SearchKey.PurposeMapEntry\x1a^\n\x0fPurposeMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.org.dash.platform.dapi.v0.SecurityLevelMap:\x02\x38\x01\"\xbf\x02\n\x10SecurityLevelMap\x12]\n\x12security_level_map\x18\x01 \x03(\x0b\x32\x41.org.dash.platform.dapi.v0.SecurityLevelMap.SecurityLevelMapEntry\x1aw\n\x15SecurityLevelMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12M\n\x05value\x18\x02 \x01(\x0e\x32>.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType:\x02\x38\x01\"S\n\x12KeyKindRequestType\x12\x1f\n\x1b\x43URRENT_KEY_OF_KIND_REQUEST\x10\x00\x12\x1c\n\x18\x41LL_KEYS_OF_KIND_REQUEST\x10\x01\"\xda\x02\n\x16GetIdentityKeysRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetIdentityKeysRequest.GetIdentityKeysRequestV0H\x00\x1a\xda\x01\n\x18GetIdentityKeysRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12?\n\x0crequest_type\x18\x02 \x01(\x0b\x32).org.dash.platform.dapi.v0.KeyRequestType\x12+\n\x05limit\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\x99\x03\n\x17GetIdentityKeysResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0H\x00\x1a\x96\x02\n\x19GetIdentityKeysResponseV0\x12\x61\n\x04keys\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0.KeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1a\n\x04Keys\x12\x12\n\nkeys_bytes\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xef\x02\n GetIdentitiesContractKeysRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest.GetIdentitiesContractKeysRequestV0H\x00\x1a\xd1\x01\n\"GetIdentitiesContractKeysRequestV0\x12\x16\n\x0eidentities_ids\x18\x01 \x03(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\x1f\n\x12\x64ocument_type_name\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x08purposes\x18\x04 \x03(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x15\n\x13_document_type_nameB\t\n\x07version\"\xdf\x06\n!GetIdentitiesContractKeysResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0H\x00\x1a\xbe\x05\n#GetIdentitiesContractKeysResponseV0\x12\x8a\x01\n\x0fidentities_keys\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentitiesKeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aY\n\x0bPurposeKeys\x12\x36\n\x07purpose\x18\x01 \x01(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\x12\n\nkeys_bytes\x18\x02 \x03(\x0c\x1a\x9f\x01\n\x0cIdentityKeys\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12z\n\x04keys\x18\x02 \x03(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.PurposeKeys\x1a\x90\x01\n\x0eIdentitiesKeys\x12~\n\x07\x65ntries\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentityKeysB\x08\n\x06resultB\t\n\x07version\"\xa4\x02\n*GetEvonodesProposedEpochBlocksByIdsRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest.GetEvonodesProposedEpochBlocksByIdsRequestV0H\x00\x1ah\n,GetEvonodesProposedEpochBlocksByIdsRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0b\n\x03ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x08\n\x06_epochB\t\n\x07version\"\x92\x06\n&GetEvonodesProposedEpochBlocksResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0H\x00\x1a\xe2\x04\n(GetEvonodesProposedEpochBlocksResponseV0\x12\xb1\x01\n#evonodes_proposed_block_counts_info\x18\x01 \x01(\x0b\x32\x81\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodesProposedBlocksH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x15\x45vonodeProposedBlocks\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x11\n\x05\x63ount\x18\x02 \x01(\x04\x42\x02\x30\x01\x1a\xc4\x01\n\x16\x45vonodesProposedBlocks\x12\xa9\x01\n\x1e\x65vonodes_proposed_block_counts\x18\x01 \x03(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodeProposedBlocksB\x08\n\x06resultB\t\n\x07version\"\xf2\x02\n,GetEvonodesProposedEpochBlocksByRangeRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest.GetEvonodesProposedEpochBlocksByRangeRequestV0H\x00\x1a\xaf\x01\n.GetEvonodesProposedEpochBlocksByRangeRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x02 \x01(\rH\x02\x88\x01\x01\x12\x15\n\x0bstart_after\x18\x03 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x04 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x07\n\x05startB\x08\n\x06_epochB\x08\n\x06_limitB\t\n\x07version\"\xcd\x01\n\x1cGetIdentitiesBalancesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest.GetIdentitiesBalancesRequestV0H\x00\x1a<\n\x1eGetIdentitiesBalancesRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9f\x05\n\x1dGetIdentitiesBalancesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0H\x00\x1a\x8a\x04\n\x1fGetIdentitiesBalancesResponseV0\x12\x8a\x01\n\x13identities_balances\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentitiesBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aL\n\x0fIdentityBalance\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x8f\x01\n\x12IdentitiesBalances\x12y\n\x07\x65ntries\x18\x01 \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentityBalanceB\x08\n\x06resultB\t\n\x07version\"\xb4\x01\n\x16GetDataContractRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetDataContractRequest.GetDataContractRequestV0H\x00\x1a\x35\n\x18GetDataContractRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xb3\x02\n\x17GetDataContractResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractResponse.GetDataContractResponseV0H\x00\x1a\xb0\x01\n\x19GetDataContractResponseV0\x12\x17\n\rdata_contract\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb9\x01\n\x17GetDataContractsRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractsRequest.GetDataContractsRequestV0H\x00\x1a\x37\n\x19GetDataContractsRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xcf\x04\n\x18GetDataContractsResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetDataContractsResponse.GetDataContractsResponseV0H\x00\x1a[\n\x11\x44\x61taContractEntry\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x32\n\rdata_contract\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x1au\n\rDataContracts\x12\x64\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32\x45.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractEntry\x1a\xf5\x01\n\x1aGetDataContractsResponseV0\x12[\n\x0e\x64\x61ta_contracts\x18\x01 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc5\x02\n\x1dGetDataContractHistoryRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetDataContractHistoryRequest.GetDataContractHistoryRequestV0H\x00\x1a\xb0\x01\n\x1fGetDataContractHistoryRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0bstart_at_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xb2\x05\n\x1eGetDataContractHistoryResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0H\x00\x1a\x9a\x04\n GetDataContractHistoryResponseV0\x12\x8f\x01\n\x15\x64\x61ta_contract_history\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a;\n\x18\x44\x61taContractHistoryEntry\x12\x10\n\x04\x64\x61te\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05value\x18\x02 \x01(\x0c\x1a\xaa\x01\n\x13\x44\x61taContractHistory\x12\x92\x01\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32s.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryEntryB\x08\n\x06resultB\t\n\x07version\"\xb2\x02\n\x13GetDocumentsRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetDocumentsRequest.GetDocumentsRequestV0H\x00\x1a\xbb\x01\n\x15GetDocumentsRequestV0\x12\x18\n\x10\x64\x61ta_contract_id\x18\x01 \x01(\x0c\x12\x15\n\rdocument_type\x18\x02 \x01(\t\x12\r\n\x05where\x18\x03 \x01(\x0c\x12\x10\n\x08order_by\x18\x04 \x01(\x0c\x12\r\n\x05limit\x18\x05 \x01(\r\x12\x15\n\x0bstart_after\x18\x06 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x07 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x08 \x01(\x08\x42\x07\n\x05startB\t\n\x07version\"\x95\x03\n\x14GetDocumentsResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0H\x00\x1a\x9b\x02\n\x16GetDocumentsResponseV0\x12\x65\n\tdocuments\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0.DocumentsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1e\n\tDocuments\x12\x11\n\tdocuments\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xed\x01\n!GetIdentityByPublicKeyHashRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest.GetIdentityByPublicKeyHashRequestV0H\x00\x1aM\n#GetIdentityByPublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xda\x02\n\"GetIdentityByPublicKeyHashResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse.GetIdentityByPublicKeyHashResponseV0H\x00\x1a\xb6\x01\n$GetIdentityByPublicKeyHashResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n*GetIdentityByNonUniquePublicKeyHashRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest.GetIdentityByNonUniquePublicKeyHashRequestV0H\x00\x1a\x80\x01\n,GetIdentityByNonUniquePublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\x18\n\x0bstart_after\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x0e\n\x0c_start_afterB\t\n\x07version\"\xd6\x06\n+GetIdentityByNonUniquePublicKeyHashResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0H\x00\x1a\x96\x05\n-GetIdentityByNonUniquePublicKeyHashResponseV0\x12\x9a\x01\n\x08identity\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityResponseH\x00\x12\x9d\x01\n\x05proof\x18\x02 \x01(\x0b\x32\x8b\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityProvedResponseH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x36\n\x10IdentityResponse\x12\x15\n\x08identity\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x0b\n\t_identity\x1a\xa6\x01\n\x16IdentityProvedResponse\x12P\n&grovedb_identity_public_key_hash_proof\x18\x01 \x01(\x0b\x32 .org.dash.platform.dapi.v0.Proof\x12!\n\x14identity_proof_bytes\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x17\n\x15_identity_proof_bytesB\x08\n\x06resultB\t\n\x07version\"\xfb\x01\n#WaitForStateTransitionResultRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0H\x00\x1aU\n%WaitForStateTransitionResultRequestV0\x12\x1d\n\x15state_transition_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x99\x03\n$WaitForStateTransitionResultResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0H\x00\x1a\xef\x01\n&WaitForStateTransitionResultResponseV0\x12I\n\x05\x65rror\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.StateTransitionBroadcastErrorH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x19GetConsensusParamsRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetConsensusParamsRequest.GetConsensusParamsRequestV0H\x00\x1a<\n\x1bGetConsensusParamsRequestV0\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9c\x04\n\x1aGetConsensusParamsResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetConsensusParamsResponse.GetConsensusParamsResponseV0H\x00\x1aP\n\x14\x43onsensusParamsBlock\x12\x11\n\tmax_bytes\x18\x01 \x01(\t\x12\x0f\n\x07max_gas\x18\x02 \x01(\t\x12\x14\n\x0ctime_iota_ms\x18\x03 \x01(\t\x1a\x62\n\x17\x43onsensusParamsEvidence\x12\x1a\n\x12max_age_num_blocks\x18\x01 \x01(\t\x12\x18\n\x10max_age_duration\x18\x02 \x01(\t\x12\x11\n\tmax_bytes\x18\x03 \x01(\t\x1a\xda\x01\n\x1cGetConsensusParamsResponseV0\x12Y\n\x05\x62lock\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsBlock\x12_\n\x08\x65vidence\x18\x02 \x01(\x0b\x32M.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsEvidenceB\t\n\x07version\"\xe4\x01\n%GetProtocolVersionUpgradeStateRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest.GetProtocolVersionUpgradeStateRequestV0H\x00\x1a\x38\n\'GetProtocolVersionUpgradeStateRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xb5\x05\n&GetProtocolVersionUpgradeStateResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0H\x00\x1a\x85\x04\n(GetProtocolVersionUpgradeStateResponseV0\x12\x87\x01\n\x08versions\x18\x01 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x96\x01\n\x08Versions\x12\x89\x01\n\x08versions\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionEntry\x1a:\n\x0cVersionEntry\x12\x16\n\x0eversion_number\x18\x01 \x01(\r\x12\x12\n\nvote_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xa3\x02\n*GetProtocolVersionUpgradeVoteStatusRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest.GetProtocolVersionUpgradeVoteStatusRequestV0H\x00\x1ag\n,GetProtocolVersionUpgradeVoteStatusRequestV0\x12\x19\n\x11start_pro_tx_hash\x18\x01 \x01(\x0c\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xef\x05\n+GetProtocolVersionUpgradeVoteStatusResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0H\x00\x1a\xaf\x04\n-GetProtocolVersionUpgradeVoteStatusResponseV0\x12\x98\x01\n\x08versions\x18\x01 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignalsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xaf\x01\n\x0eVersionSignals\x12\x9c\x01\n\x0fversion_signals\x18\x01 \x03(\x0b\x32\x82\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignal\x1a\x35\n\rVersionSignal\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07version\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xf5\x01\n\x14GetEpochsInfoRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetEpochsInfoRequest.GetEpochsInfoRequestV0H\x00\x1a|\n\x16GetEpochsInfoRequestV0\x12\x31\n\x0bstart_epoch\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\x11\n\tascending\x18\x03 \x01(\x08\x12\r\n\x05prove\x18\x04 \x01(\x08\x42\t\n\x07version\"\x99\x05\n\x15GetEpochsInfoResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0H\x00\x1a\x9c\x04\n\x17GetEpochsInfoResponseV0\x12\x65\n\x06\x65pochs\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1au\n\nEpochInfos\x12g\n\x0b\x65poch_infos\x18\x01 \x03(\x0b\x32R.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfo\x1a\xa6\x01\n\tEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x16\n\nstart_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xbf\x02\n\x1dGetFinalizedEpochInfosRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest.GetFinalizedEpochInfosRequestV0H\x00\x1a\xaa\x01\n\x1fGetFinalizedEpochInfosRequestV0\x12\x19\n\x11start_epoch_index\x18\x01 \x01(\r\x12\"\n\x1astart_epoch_index_included\x18\x02 \x01(\x08\x12\x17\n\x0f\x65nd_epoch_index\x18\x03 \x01(\r\x12 \n\x18\x65nd_epoch_index_included\x18\x04 \x01(\x08\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xbd\t\n\x1eGetFinalizedEpochInfosResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0H\x00\x1a\xa5\x08\n GetFinalizedEpochInfosResponseV0\x12\x80\x01\n\x06\x65pochs\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xa4\x01\n\x13\x46inalizedEpochInfos\x12\x8c\x01\n\x15\x66inalized_epoch_infos\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfo\x1a\x9f\x04\n\x12\x46inalizedEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x1c\n\x10\x66irst_block_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\r\x12!\n\x15total_blocks_in_epoch\x18\x07 \x01(\x04\x42\x02\x30\x01\x12*\n\"next_epoch_start_core_block_height\x18\x08 \x01(\r\x12!\n\x15total_processing_fees\x18\t \x01(\x04\x42\x02\x30\x01\x12*\n\x1etotal_distributed_storage_fees\x18\n \x01(\x04\x42\x02\x30\x01\x12&\n\x1atotal_created_storage_fees\x18\x0b \x01(\x04\x42\x02\x30\x01\x12\x1e\n\x12\x63ore_block_rewards\x18\x0c \x01(\x04\x42\x02\x30\x01\x12\x81\x01\n\x0f\x62lock_proposers\x18\r \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.BlockProposer\x1a\x39\n\rBlockProposer\x12\x13\n\x0bproposer_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x62lock_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xde\x04\n\x1cGetContestedResourcesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0H\x00\x1a\xcc\x03\n\x1eGetContestedResourcesRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x1a\n\x12start_index_values\x18\x04 \x03(\x0c\x12\x18\n\x10\x65nd_index_values\x18\x05 \x03(\x0c\x12\x89\x01\n\x13start_at_value_info\x18\x06 \x01(\x0b\x32g.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0.StartAtValueInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1a\x45\n\x10StartAtValueInfo\x12\x13\n\x0bstart_value\x18\x01 \x01(\x0c\x12\x1c\n\x14start_value_included\x18\x02 \x01(\x08\x42\x16\n\x14_start_at_value_infoB\x08\n\x06_countB\t\n\x07version\"\x88\x04\n\x1dGetContestedResourcesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0H\x00\x1a\xf3\x02\n\x1fGetContestedResourcesResponseV0\x12\x95\x01\n\x19\x63ontested_resource_values\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0.ContestedResourceValuesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a<\n\x17\x43ontestedResourceValues\x12!\n\x19\x63ontested_resource_values\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x05\n\x1cGetVotePollsByEndDateRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0H\x00\x1a\xc0\x04\n\x1eGetVotePollsByEndDateRequestV0\x12\x84\x01\n\x0fstart_time_info\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.StartAtTimeInfoH\x00\x88\x01\x01\x12\x80\x01\n\rend_time_info\x18\x02 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.EndAtTimeInfoH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x11\n\tascending\x18\x05 \x01(\x08\x12\r\n\x05prove\x18\x06 \x01(\x08\x1aI\n\x0fStartAtTimeInfo\x12\x19\n\rstart_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13start_time_included\x18\x02 \x01(\x08\x1a\x43\n\rEndAtTimeInfo\x12\x17\n\x0b\x65nd_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x65nd_time_included\x18\x02 \x01(\x08\x42\x12\n\x10_start_time_infoB\x10\n\x0e_end_time_infoB\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07version\"\x83\x06\n\x1dGetVotePollsByEndDateResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0H\x00\x1a\xee\x04\n\x1fGetVotePollsByEndDateResponseV0\x12\x9c\x01\n\x18vote_polls_by_timestamps\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestampsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aV\n\x1eSerializedVotePollsByTimestamp\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x15serialized_vote_polls\x18\x02 \x03(\x0c\x1a\xd7\x01\n\x1fSerializedVotePollsByTimestamps\x12\x99\x01\n\x18vote_polls_by_timestamps\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestamp\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xff\x06\n$GetContestedResourceVoteStateRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0H\x00\x1a\xd5\x05\n&GetContestedResourceVoteStateRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x86\x01\n\x0bresult_type\x18\x05 \x01(\x0e\x32q.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.ResultType\x12\x36\n.allow_include_locked_and_abstaining_vote_tally\x18\x06 \x01(\x08\x12\xa3\x01\n\x18start_at_identifier_info\x18\x07 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x08 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\"I\n\nResultType\x12\r\n\tDOCUMENTS\x10\x00\x12\x0e\n\nVOTE_TALLY\x10\x01\x12\x1c\n\x18\x44OCUMENTS_AND_VOTE_TALLY\x10\x02\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\x94\x0c\n%GetContestedResourceVoteStateResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0H\x00\x1a\xe7\n\n\'GetContestedResourceVoteStateResponseV0\x12\xae\x01\n\x1d\x63ontested_resource_contenders\x18\x01 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.ContestedResourceContendersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xda\x03\n\x10\x46inishedVoteInfo\x12\xad\x01\n\x15\x66inished_vote_outcome\x18\x01 \x01(\x0e\x32\x8d\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfo.FinishedVoteOutcome\x12\x1f\n\x12won_by_identity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12$\n\x18\x66inished_at_block_height\x18\x03 \x01(\x04\x42\x02\x30\x01\x12%\n\x1d\x66inished_at_core_block_height\x18\x04 \x01(\r\x12%\n\x19\x66inished_at_block_time_ms\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x66inished_at_epoch\x18\x06 \x01(\r\"O\n\x13\x46inishedVoteOutcome\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\n\n\x06LOCKED\x10\x01\x12\x16\n\x12NO_PREVIOUS_WINNER\x10\x02\x42\x15\n\x13_won_by_identity_id\x1a\xc4\x03\n\x1b\x43ontestedResourceContenders\x12\x86\x01\n\ncontenders\x18\x01 \x03(\x0b\x32r.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.Contender\x12\x1f\n\x12\x61\x62stain_vote_tally\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0flock_vote_tally\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x9a\x01\n\x12\x66inished_vote_info\x18\x04 \x01(\x0b\x32y.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfoH\x02\x88\x01\x01\x42\x15\n\x13_abstain_vote_tallyB\x12\n\x10_lock_vote_tallyB\x15\n\x13_finished_vote_info\x1ak\n\tContender\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x17\n\nvote_count\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08\x64ocument\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x42\r\n\x0b_vote_countB\x0b\n\t_documentB\x08\n\x06resultB\t\n\x07version\"\xd5\x05\n,GetContestedResourceVotersForIdentityRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0H\x00\x1a\x92\x04\n.GetContestedResourceVotersForIdentityRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x15\n\rcontestant_id\x18\x05 \x01(\x0c\x12\xb4\x01\n\x18start_at_identifier_info\x18\x06 \x01(\x0b\x32\x8c\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\xf1\x04\n-GetContestedResourceVotersForIdentityResponse\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0H\x00\x1a\xab\x03\n/GetContestedResourceVotersForIdentityResponseV0\x12\xb6\x01\n\x19\x63ontested_resource_voters\x18\x01 \x01(\x0b\x32\x90\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0.ContestedResourceVotersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x43\n\x17\x43ontestedResourceVoters\x12\x0e\n\x06voters\x18\x01 \x03(\x0c\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xad\x05\n(GetContestedResourceIdentityVotesRequest\x12|\n\x02v0\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0H\x00\x1a\xf7\x03\n*GetContestedResourceIdentityVotesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0forder_ascending\x18\x04 \x01(\x08\x12\xae\x01\n\x1astart_at_vote_poll_id_info\x18\x05 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0.StartAtVotePollIdInfoH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x1a\x61\n\x15StartAtVotePollIdInfo\x12 \n\x18start_at_poll_identifier\x18\x01 \x01(\x0c\x12&\n\x1estart_poll_identifier_included\x18\x02 \x01(\x08\x42\x1d\n\x1b_start_at_vote_poll_id_infoB\t\n\x07version\"\xc8\n\n)GetContestedResourceIdentityVotesResponse\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0H\x00\x1a\x8f\t\n+GetContestedResourceIdentityVotesResponseV0\x12\xa1\x01\n\x05votes\x18\x01 \x01(\x0b\x32\x8f\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVotesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xf7\x01\n\x1e\x43ontestedResourceIdentityVotes\x12\xba\x01\n!contested_resource_identity_votes\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVote\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x1a\xad\x02\n\x12ResourceVoteChoice\x12\xad\x01\n\x10vote_choice_type\x18\x01 \x01(\x0e\x32\x92\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoice.VoteChoiceType\x12\x18\n\x0bidentity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\"=\n\x0eVoteChoiceType\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\x0b\n\x07\x41\x42STAIN\x10\x01\x12\x08\n\x04LOCK\x10\x02\x42\x0e\n\x0c_identity_id\x1a\x95\x02\n\x1d\x43ontestedResourceIdentityVote\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\'\n\x1fserialized_index_storage_values\x18\x03 \x03(\x0c\x12\x99\x01\n\x0bvote_choice\x18\x04 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoiceB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n%GetPrefundedSpecializedBalanceRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest.GetPrefundedSpecializedBalanceRequestV0H\x00\x1a\x44\n\'GetPrefundedSpecializedBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xed\x02\n&GetPrefundedSpecializedBalanceResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse.GetPrefundedSpecializedBalanceResponseV0H\x00\x1a\xbd\x01\n(GetPrefundedSpecializedBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xd0\x01\n GetTotalCreditsInPlatformRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest.GetTotalCreditsInPlatformRequestV0H\x00\x1a\x33\n\"GetTotalCreditsInPlatformRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xd9\x02\n!GetTotalCreditsInPlatformResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse.GetTotalCreditsInPlatformResponseV0H\x00\x1a\xb8\x01\n#GetTotalCreditsInPlatformResponseV0\x12\x15\n\x07\x63redits\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x16GetPathElementsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetPathElementsRequest.GetPathElementsRequestV0H\x00\x1a\x45\n\x18GetPathElementsRequestV0\x12\x0c\n\x04path\x18\x01 \x03(\x0c\x12\x0c\n\x04keys\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xa3\x03\n\x17GetPathElementsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0H\x00\x1a\xa0\x02\n\x19GetPathElementsResponseV0\x12i\n\x08\x65lements\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0.ElementsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1c\n\x08\x45lements\x12\x10\n\x08\x65lements\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\x81\x01\n\x10GetStatusRequest\x12L\n\x02v0\x18\x01 \x01(\x0b\x32>.org.dash.platform.dapi.v0.GetStatusRequest.GetStatusRequestV0H\x00\x1a\x14\n\x12GetStatusRequestV0B\t\n\x07version\"\xd0\x10\n\x11GetStatusResponse\x12N\n\x02v0\x18\x01 \x01(\x0b\x32@.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0H\x00\x1a\xdf\x0f\n\x13GetStatusResponseV0\x12Y\n\x07version\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version\x12S\n\x04node\x18\x02 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Node\x12U\n\x05\x63hain\x18\x03 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Chain\x12Y\n\x07network\x18\x04 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Network\x12^\n\nstate_sync\x18\x05 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.StateSync\x12S\n\x04time\x18\x06 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Time\x1a\xee\x04\n\x07Version\x12\x63\n\x08software\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Software\x12\x63\n\x08protocol\x18\x02 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol\x1a^\n\x08Software\x12\x0c\n\x04\x64\x61pi\x18\x01 \x01(\t\x12\x12\n\x05\x64rive\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ntenderdash\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_driveB\r\n\x0b_tenderdash\x1a\xb8\x02\n\x08Protocol\x12p\n\ntenderdash\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Tenderdash\x12\x66\n\x05\x64rive\x18\x02 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Drive\x1a(\n\nTenderdash\x12\x0b\n\x03p2p\x18\x01 \x01(\r\x12\r\n\x05\x62lock\x18\x02 \x01(\r\x1a(\n\x05\x44rive\x12\x0e\n\x06latest\x18\x03 \x01(\r\x12\x0f\n\x07\x63urrent\x18\x04 \x01(\r\x1a\x7f\n\x04Time\x12\x11\n\x05local\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x05\x62lock\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x12\x18\n\x07genesis\x18\x03 \x01(\x04\x42\x02\x30\x01H\x01\x88\x01\x01\x12\x12\n\x05\x65poch\x18\x04 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_blockB\n\n\x08_genesisB\x08\n\x06_epoch\x1a<\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x18\n\x0bpro_tx_hash\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x0e\n\x0c_pro_tx_hash\x1a\xb3\x02\n\x05\x43hain\x12\x13\n\x0b\x63\x61tching_up\x18\x01 \x01(\x08\x12\x19\n\x11latest_block_hash\x18\x02 \x01(\x0c\x12\x17\n\x0flatest_app_hash\x18\x03 \x01(\x0c\x12\x1f\n\x13latest_block_height\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13\x65\x61rliest_block_hash\x18\x05 \x01(\x0c\x12\x19\n\x11\x65\x61rliest_app_hash\x18\x06 \x01(\x0c\x12!\n\x15\x65\x61rliest_block_height\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15max_peer_block_height\x18\t \x01(\x04\x42\x02\x30\x01\x12%\n\x18\x63ore_chain_locked_height\x18\n \x01(\rH\x00\x88\x01\x01\x42\x1b\n\x19_core_chain_locked_height\x1a\x43\n\x07Network\x12\x10\n\x08\x63hain_id\x18\x01 \x01(\t\x12\x13\n\x0bpeers_count\x18\x02 \x01(\r\x12\x11\n\tlistening\x18\x03 \x01(\x08\x1a\x85\x02\n\tStateSync\x12\x1d\n\x11total_synced_time\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1a\n\x0eremaining_time\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0ftotal_snapshots\x18\x03 \x01(\r\x12\"\n\x16\x63hunk_process_avg_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x0fsnapshot_height\x18\x05 \x01(\x04\x42\x02\x30\x01\x12!\n\x15snapshot_chunks_count\x18\x06 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x11\x62\x61\x63kfilled_blocks\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15\x62\x61\x63kfill_blocks_total\x18\x08 \x01(\x04\x42\x02\x30\x01\x42\t\n\x07version\"\xb1\x01\n\x1cGetCurrentQuorumsInfoRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest.GetCurrentQuorumsInfoRequestV0H\x00\x1a \n\x1eGetCurrentQuorumsInfoRequestV0B\t\n\x07version\"\xa1\x05\n\x1dGetCurrentQuorumsInfoResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.GetCurrentQuorumsInfoResponseV0H\x00\x1a\x46\n\x0bValidatorV0\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07node_ip\x18\x02 \x01(\t\x12\x11\n\tis_banned\x18\x03 \x01(\x08\x1a\xaf\x01\n\x0eValidatorSetV0\x12\x13\n\x0bquorum_hash\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ore_height\x18\x02 \x01(\r\x12U\n\x07members\x18\x03 \x03(\x0b\x32\x44.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorV0\x12\x1c\n\x14threshold_public_key\x18\x04 \x01(\x0c\x1a\x92\x02\n\x1fGetCurrentQuorumsInfoResponseV0\x12\x15\n\rquorum_hashes\x18\x01 \x03(\x0c\x12\x1b\n\x13\x63urrent_quorum_hash\x18\x02 \x01(\x0c\x12_\n\x0evalidator_sets\x18\x03 \x03(\x0b\x32G.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorSetV0\x12\x1b\n\x13last_block_proposer\x18\x04 \x01(\x0c\x12=\n\x08metadata\x18\x05 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\t\n\x07version\"\xf4\x01\n\x1fGetIdentityTokenBalancesRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest.GetIdentityTokenBalancesRequestV0H\x00\x1aZ\n!GetIdentityTokenBalancesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xad\x05\n GetIdentityTokenBalancesResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0H\x00\x1a\x8f\x04\n\"GetIdentityTokenBalancesResponseV0\x12\x86\x01\n\x0etoken_balances\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aG\n\x11TokenBalanceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x9a\x01\n\rTokenBalances\x12\x88\x01\n\x0etoken_balances\x18\x01 \x03(\x0b\x32p.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xfc\x01\n!GetIdentitiesTokenBalancesRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest.GetIdentitiesTokenBalancesRequestV0H\x00\x1a\\\n#GetIdentitiesTokenBalancesRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xf2\x05\n\"GetIdentitiesTokenBalancesResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0H\x00\x1a\xce\x04\n$GetIdentitiesTokenBalancesResponseV0\x12\x9b\x01\n\x17identity_token_balances\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aR\n\x19IdentityTokenBalanceEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\xb7\x01\n\x15IdentityTokenBalances\x12\x9d\x01\n\x17identity_token_balances\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xe8\x01\n\x1cGetIdentityTokenInfosRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest.GetIdentityTokenInfosRequestV0H\x00\x1aW\n\x1eGetIdentityTokenInfosRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\x98\x06\n\x1dGetIdentityTokenInfosResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0H\x00\x1a\x83\x05\n\x1fGetIdentityTokenInfosResponseV0\x12z\n\x0btoken_infos\x18\x01 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb0\x01\n\x0eTokenInfoEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x82\x01\n\x04info\x18\x02 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x8a\x01\n\nTokenInfos\x12|\n\x0btoken_infos\x18\x01 \x03(\x0b\x32g.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n\x1eGetIdentitiesTokenInfosRequest\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest.GetIdentitiesTokenInfosRequestV0H\x00\x1aY\n GetIdentitiesTokenInfosRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xca\x06\n\x1fGetIdentitiesTokenInfosResponse\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0H\x00\x1a\xaf\x05\n!GetIdentitiesTokenInfosResponseV0\x12\x8f\x01\n\x14identity_token_infos\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.IdentityTokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb7\x01\n\x0eTokenInfoEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x86\x01\n\x04info\x18\x02 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x97\x01\n\x12IdentityTokenInfos\x12\x80\x01\n\x0btoken_infos\x18\x01 \x03(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbf\x01\n\x17GetTokenStatusesRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetTokenStatusesRequest.GetTokenStatusesRequestV0H\x00\x1a=\n\x19GetTokenStatusesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xe7\x04\n\x18GetTokenStatusesResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0H\x00\x1a\xe1\x03\n\x1aGetTokenStatusesResponseV0\x12v\n\x0etoken_statuses\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x44\n\x10TokenStatusEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x13\n\x06paused\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_paused\x1a\x88\x01\n\rTokenStatuses\x12w\n\x0etoken_statuses\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusEntryB\x08\n\x06resultB\t\n\x07version\"\xef\x01\n#GetTokenDirectPurchasePricesRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest.GetTokenDirectPurchasePricesRequestV0H\x00\x1aI\n%GetTokenDirectPurchasePricesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x8b\t\n$GetTokenDirectPurchasePricesResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0H\x00\x1a\xe1\x07\n&GetTokenDirectPurchasePricesResponseV0\x12\xa9\x01\n\x1ctoken_direct_purchase_prices\x18\x01 \x01(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePricesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xa7\x01\n\x0fPricingSchedule\x12\x93\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PriceForQuantity\x1a\xe4\x01\n\x1dTokenDirectPurchasePriceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x15\n\x0b\x66ixed_price\x18\x02 \x01(\x04H\x00\x12\x90\x01\n\x0evariable_price\x18\x03 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PricingScheduleH\x00\x42\x07\n\x05price\x1a\xc8\x01\n\x19TokenDirectPurchasePrices\x12\xaa\x01\n\x1btoken_direct_purchase_price\x18\x01 \x03(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePriceEntryB\x08\n\x06resultB\t\n\x07version\"\xce\x01\n\x1bGetTokenContractInfoRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenContractInfoRequest.GetTokenContractInfoRequestV0H\x00\x1a@\n\x1dGetTokenContractInfoRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xfb\x03\n\x1cGetTokenContractInfoResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0H\x00\x1a\xe9\x02\n\x1eGetTokenContractInfoResponseV0\x12|\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0.TokenContractInfoDataH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aM\n\x15TokenContractInfoData\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xef\x04\n)GetTokenPreProgrammedDistributionsRequest\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0H\x00\x1a\xb6\x03\n+GetTokenPreProgrammedDistributionsRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x98\x01\n\rstart_at_info\x18\x02 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0.StartAtInfoH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x1a\x9a\x01\n\x0bStartAtInfo\x12\x15\n\rstart_time_ms\x18\x01 \x01(\x04\x12\x1c\n\x0fstart_recipient\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12%\n\x18start_recipient_included\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_start_recipientB\x1b\n\x19_start_recipient_includedB\x10\n\x0e_start_at_infoB\x08\n\x06_limitB\t\n\x07version\"\xec\x07\n*GetTokenPreProgrammedDistributionsResponse\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0H\x00\x1a\xaf\x06\n,GetTokenPreProgrammedDistributionsResponseV0\x12\xa5\x01\n\x13token_distributions\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a>\n\x16TokenDistributionEntry\x12\x14\n\x0crecipient_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x1a\xd4\x01\n\x1bTokenTimedDistributionEntry\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\xa1\x01\n\rdistributions\x18\x02 \x03(\x0b\x32\x89\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionEntry\x1a\xc3\x01\n\x12TokenDistributions\x12\xac\x01\n\x13token_distributions\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenTimedDistributionEntryB\x08\n\x06resultB\t\n\x07version\"\x82\x04\n-GetTokenPerpetualDistributionLastClaimRequest\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.GetTokenPerpetualDistributionLastClaimRequestV0H\x00\x1aI\n\x11\x43ontractTokenInfo\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\r\x1a\xf1\x01\n/GetTokenPerpetualDistributionLastClaimRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12v\n\rcontract_info\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.ContractTokenInfoH\x00\x88\x01\x01\x12\x13\n\x0bidentity_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x10\n\x0e_contract_infoB\t\n\x07version\"\x93\x05\n.GetTokenPerpetualDistributionLastClaimResponse\x12\x88\x01\n\x02v0\x18\x01 \x01(\x0b\x32z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0H\x00\x1a\xca\x03\n0GetTokenPerpetualDistributionLastClaimResponseV0\x12\x9f\x01\n\nlast_claim\x18\x01 \x01(\x0b\x32\x88\x01.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0.LastClaimInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\rLastClaimInfo\x12\x1a\n\x0ctimestamp_ms\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x1a\n\x0c\x62lock_height\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x12\x0f\n\x05\x65poch\x18\x03 \x01(\rH\x00\x12\x13\n\traw_bytes\x18\x04 \x01(\x0cH\x00\x42\t\n\x07paid_atB\x08\n\x06resultB\t\n\x07version\"\xca\x01\n\x1aGetTokenTotalSupplyRequest\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest.GetTokenTotalSupplyRequestV0H\x00\x1a?\n\x1cGetTokenTotalSupplyRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xaf\x04\n\x1bGetTokenTotalSupplyResponse\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0H\x00\x1a\xa0\x03\n\x1dGetTokenTotalSupplyResponseV0\x12\x88\x01\n\x12token_total_supply\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0.TokenTotalSupplyEntryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\x15TokenTotalSupplyEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x30\n(total_aggregated_amount_in_user_accounts\x18\x02 \x01(\x04\x12\x1b\n\x13total_system_amount\x18\x03 \x01(\x04\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x01\n\x13GetGroupInfoRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetGroupInfoRequest.GetGroupInfoRequestV0H\x00\x1a\\\n\x15GetGroupInfoRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xd4\x05\n\x14GetGroupInfoResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0H\x00\x1a\xda\x04\n\x16GetGroupInfoResponseV0\x12\x66\n\ngroup_info\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x98\x01\n\x0eGroupInfoEntry\x12h\n\x07members\x18\x01 \x03(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x02 \x01(\r\x1a\x8a\x01\n\tGroupInfo\x12n\n\ngroup_info\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoEntryH\x00\x88\x01\x01\x42\r\n\x0b_group_infoB\x08\n\x06resultB\t\n\x07version\"\xed\x03\n\x14GetGroupInfosRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfosRequest.GetGroupInfosRequestV0H\x00\x1au\n\x1cStartAtGroupContractPosition\x12%\n\x1dstart_group_contract_position\x18\x01 \x01(\r\x12.\n&start_group_contract_position_included\x18\x02 \x01(\x08\x1a\xfc\x01\n\x16GetGroupInfosRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12{\n start_at_group_contract_position\x18\x02 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupInfosRequest.StartAtGroupContractPositionH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x42#\n!_start_at_group_contract_positionB\x08\n\x06_countB\t\n\x07version\"\xff\x05\n\x15GetGroupInfosResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0H\x00\x1a\x82\x05\n\x17GetGroupInfosResponseV0\x12j\n\x0bgroup_infos\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\xc3\x01\n\x16GroupPositionInfoEntry\x12\x1f\n\x17group_contract_position\x18\x01 \x01(\r\x12j\n\x07members\x18\x02 \x03(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x03 \x01(\r\x1a\x82\x01\n\nGroupInfos\x12t\n\x0bgroup_infos\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupPositionInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbe\x04\n\x16GetGroupActionsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetGroupActionsRequest.GetGroupActionsRequestV0H\x00\x1aL\n\x0fStartAtActionId\x12\x17\n\x0fstart_action_id\x18\x01 \x01(\x0c\x12 \n\x18start_action_id_included\x18\x02 \x01(\x08\x1a\xc8\x02\n\x18GetGroupActionsRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12N\n\x06status\x18\x03 \x01(\x0e\x32>.org.dash.platform.dapi.v0.GetGroupActionsRequest.ActionStatus\x12\x62\n\x12start_at_action_id\x18\x04 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetGroupActionsRequest.StartAtActionIdH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x42\x15\n\x13_start_at_action_idB\x08\n\x06_count\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\xd6\x1e\n\x17GetGroupActionsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0H\x00\x1a\xd3\x1d\n\x19GetGroupActionsResponseV0\x12r\n\rgroup_actions\x18\x01 \x01(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a[\n\tMintEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0crecipient_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a[\n\tBurnEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0c\x62urn_from_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aJ\n\x0b\x46reezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aL\n\rUnfreezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x66\n\x17\x44\x65stroyFrozenFundsEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x13SharedEncryptedNote\x12\x18\n\x10sender_key_index\x18\x01 \x01(\r\x12\x1b\n\x13recipient_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a{\n\x15PersonalEncryptedNote\x12!\n\x19root_encryption_key_index\x18\x01 \x01(\r\x12\'\n\x1f\x64\x65rivation_encryption_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a\xe9\x01\n\x14\x45mergencyActionEvent\x12\x81\x01\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32l.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEvent.ActionType\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\"#\n\nActionType\x12\t\n\x05PAUSE\x10\x00\x12\n\n\x06RESUME\x10\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x16TokenConfigUpdateEvent\x12 \n\x18token_config_update_item\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\xe6\x03\n\x1eUpdateDirectPurchasePriceEvent\x12\x15\n\x0b\x66ixed_price\x18\x01 \x01(\x04H\x00\x12\x95\x01\n\x0evariable_price\x18\x02 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PricingScheduleH\x00\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x01\x88\x01\x01\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xac\x01\n\x0fPricingSchedule\x12\x98\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PriceForQuantityB\x07\n\x05priceB\x0e\n\x0c_public_note\x1a\xfc\x02\n\x10GroupActionEvent\x12n\n\x0btoken_event\x18\x01 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenEventH\x00\x12t\n\x0e\x64ocument_event\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentEventH\x00\x12t\n\x0e\x63ontract_event\x18\x03 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractEventH\x00\x42\x0c\n\nevent_type\x1a\x8b\x01\n\rDocumentEvent\x12r\n\x06\x63reate\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentCreateEventH\x00\x42\x06\n\x04type\x1a/\n\x13\x44ocumentCreateEvent\x12\x18\n\x10\x63reated_document\x18\x01 \x01(\x0c\x1a/\n\x13\x43ontractUpdateEvent\x12\x18\n\x10updated_contract\x18\x01 \x01(\x0c\x1a\x8b\x01\n\rContractEvent\x12r\n\x06update\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractUpdateEventH\x00\x42\x06\n\x04type\x1a\xd1\x07\n\nTokenEvent\x12\x66\n\x04mint\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.MintEventH\x00\x12\x66\n\x04\x62urn\x18\x02 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.BurnEventH\x00\x12j\n\x06\x66reeze\x18\x03 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.FreezeEventH\x00\x12n\n\x08unfreeze\x18\x04 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UnfreezeEventH\x00\x12\x84\x01\n\x14\x64\x65stroy_frozen_funds\x18\x05 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DestroyFrozenFundsEventH\x00\x12}\n\x10\x65mergency_action\x18\x06 \x01(\x0b\x32\x61.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEventH\x00\x12\x82\x01\n\x13token_config_update\x18\x07 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenConfigUpdateEventH\x00\x12\x83\x01\n\x0cupdate_price\x18\x08 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEventH\x00\x42\x06\n\x04type\x1a\x93\x01\n\x10GroupActionEntry\x12\x11\n\taction_id\x18\x01 \x01(\x0c\x12l\n\x05\x65vent\x18\x02 \x01(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEvent\x1a\x84\x01\n\x0cGroupActions\x12t\n\rgroup_actions\x18\x01 \x03(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEntryB\x08\n\x06resultB\t\n\x07version\"\x88\x03\n\x1cGetGroupActionSignersRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.GetGroupActionSignersRequestV0H\x00\x1a\xce\x01\n\x1eGetGroupActionSignersRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12T\n\x06status\x18\x03 \x01(\x0e\x32\x44.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.ActionStatus\x12\x11\n\taction_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\x8b\x05\n\x1dGetGroupActionSignersResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0H\x00\x1a\xf6\x03\n\x1fGetGroupActionSignersResponseV0\x12\x8b\x01\n\x14group_action_signers\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x35\n\x11GroupActionSigner\x12\x11\n\tsigner_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x91\x01\n\x12GroupActionSigners\x12{\n\x07signers\x18\x01 \x03(\x0b\x32j.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignerB\x08\n\x06resultB\t\n\x07version*Z\n\nKeyPurpose\x12\x12\n\x0e\x41UTHENTICATION\x10\x00\x12\x0e\n\nENCRYPTION\x10\x01\x12\x0e\n\nDECRYPTION\x10\x02\x12\x0c\n\x08TRANSFER\x10\x03\x12\n\n\x06VOTING\x10\x05\x32\xe5\x35\n\x08Platform\x12\x93\x01\n\x18\x62roadcastStateTransition\x12:.org.dash.platform.dapi.v0.BroadcastStateTransitionRequest\x1a;.org.dash.platform.dapi.v0.BroadcastStateTransitionResponse\x12l\n\x0bgetIdentity\x12-.org.dash.platform.dapi.v0.GetIdentityRequest\x1a..org.dash.platform.dapi.v0.GetIdentityResponse\x12x\n\x0fgetIdentityKeys\x12\x31.org.dash.platform.dapi.v0.GetIdentityKeysRequest\x1a\x32.org.dash.platform.dapi.v0.GetIdentityKeysResponse\x12\x96\x01\n\x19getIdentitiesContractKeys\x12;.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest\x1a<.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse\x12{\n\x10getIdentityNonce\x12\x32.org.dash.platform.dapi.v0.GetIdentityNonceRequest\x1a\x33.org.dash.platform.dapi.v0.GetIdentityNonceResponse\x12\x93\x01\n\x18getIdentityContractNonce\x12:.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse\x12\x81\x01\n\x12getIdentityBalance\x12\x34.org.dash.platform.dapi.v0.GetIdentityBalanceRequest\x1a\x35.org.dash.platform.dapi.v0.GetIdentityBalanceResponse\x12\x8a\x01\n\x15getIdentitiesBalances\x12\x37.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse\x12\xa2\x01\n\x1dgetIdentityBalanceAndRevision\x12?.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest\x1a@.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse\x12\xaf\x01\n#getEvonodesProposedEpochBlocksByIds\x12\x45.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12\xb3\x01\n%getEvonodesProposedEpochBlocksByRange\x12G.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12x\n\x0fgetDataContract\x12\x31.org.dash.platform.dapi.v0.GetDataContractRequest\x1a\x32.org.dash.platform.dapi.v0.GetDataContractResponse\x12\x8d\x01\n\x16getDataContractHistory\x12\x38.org.dash.platform.dapi.v0.GetDataContractHistoryRequest\x1a\x39.org.dash.platform.dapi.v0.GetDataContractHistoryResponse\x12{\n\x10getDataContracts\x12\x32.org.dash.platform.dapi.v0.GetDataContractsRequest\x1a\x33.org.dash.platform.dapi.v0.GetDataContractsResponse\x12o\n\x0cgetDocuments\x12..org.dash.platform.dapi.v0.GetDocumentsRequest\x1a/.org.dash.platform.dapi.v0.GetDocumentsResponse\x12\x99\x01\n\x1agetIdentityByPublicKeyHash\x12<.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest\x1a=.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse\x12\xb4\x01\n#getIdentityByNonUniquePublicKeyHash\x12\x45.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest\x1a\x46.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse\x12\x9f\x01\n\x1cwaitForStateTransitionResult\x12>.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest\x1a?.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse\x12\x81\x01\n\x12getConsensusParams\x12\x34.org.dash.platform.dapi.v0.GetConsensusParamsRequest\x1a\x35.org.dash.platform.dapi.v0.GetConsensusParamsResponse\x12\xa5\x01\n\x1egetProtocolVersionUpgradeState\x12@.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest\x1a\x41.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse\x12\xb4\x01\n#getProtocolVersionUpgradeVoteStatus\x12\x45.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest\x1a\x46.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse\x12r\n\rgetEpochsInfo\x12/.org.dash.platform.dapi.v0.GetEpochsInfoRequest\x1a\x30.org.dash.platform.dapi.v0.GetEpochsInfoResponse\x12\x8d\x01\n\x16getFinalizedEpochInfos\x12\x38.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest\x1a\x39.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse\x12\x8a\x01\n\x15getContestedResources\x12\x37.org.dash.platform.dapi.v0.GetContestedResourcesRequest\x1a\x38.org.dash.platform.dapi.v0.GetContestedResourcesResponse\x12\xa2\x01\n\x1dgetContestedResourceVoteState\x12?.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest\x1a@.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse\x12\xba\x01\n%getContestedResourceVotersForIdentity\x12G.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest\x1aH.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse\x12\xae\x01\n!getContestedResourceIdentityVotes\x12\x43.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest\x1a\x44.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse\x12\x8a\x01\n\x15getVotePollsByEndDate\x12\x37.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest\x1a\x38.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse\x12\xa5\x01\n\x1egetPrefundedSpecializedBalance\x12@.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest\x1a\x41.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse\x12\x96\x01\n\x19getTotalCreditsInPlatform\x12;.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest\x1a<.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse\x12x\n\x0fgetPathElements\x12\x31.org.dash.platform.dapi.v0.GetPathElementsRequest\x1a\x32.org.dash.platform.dapi.v0.GetPathElementsResponse\x12\x66\n\tgetStatus\x12+.org.dash.platform.dapi.v0.GetStatusRequest\x1a,.org.dash.platform.dapi.v0.GetStatusResponse\x12\x8a\x01\n\x15getCurrentQuorumsInfo\x12\x37.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest\x1a\x38.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse\x12\x93\x01\n\x18getIdentityTokenBalances\x12:.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse\x12\x99\x01\n\x1agetIdentitiesTokenBalances\x12<.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest\x1a=.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse\x12\x8a\x01\n\x15getIdentityTokenInfos\x12\x37.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse\x12\x90\x01\n\x17getIdentitiesTokenInfos\x12\x39.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest\x1a:.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse\x12{\n\x10getTokenStatuses\x12\x32.org.dash.platform.dapi.v0.GetTokenStatusesRequest\x1a\x33.org.dash.platform.dapi.v0.GetTokenStatusesResponse\x12\x9f\x01\n\x1cgetTokenDirectPurchasePrices\x12>.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest\x1a?.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse\x12\x87\x01\n\x14getTokenContractInfo\x12\x36.org.dash.platform.dapi.v0.GetTokenContractInfoRequest\x1a\x37.org.dash.platform.dapi.v0.GetTokenContractInfoResponse\x12\xb1\x01\n\"getTokenPreProgrammedDistributions\x12\x44.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest\x1a\x45.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse\x12\xbd\x01\n&getTokenPerpetualDistributionLastClaim\x12H.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest\x1aI.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse\x12\x84\x01\n\x13getTokenTotalSupply\x12\x35.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest\x1a\x36.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse\x12o\n\x0cgetGroupInfo\x12..org.dash.platform.dapi.v0.GetGroupInfoRequest\x1a/.org.dash.platform.dapi.v0.GetGroupInfoResponse\x12r\n\rgetGroupInfos\x12/.org.dash.platform.dapi.v0.GetGroupInfosRequest\x1a\x30.org.dash.platform.dapi.v0.GetGroupInfosResponse\x12x\n\x0fgetGroupActions\x12\x31.org.dash.platform.dapi.v0.GetGroupActionsRequest\x1a\x32.org.dash.platform.dapi.v0.GetGroupActionsResponse\x12\x8a\x01\n\x15getGroupActionSigners\x12\x37.org.dash.platform.dapi.v0.GetGroupActionSignersRequest\x1a\x38.org.dash.platform.dapi.v0.GetGroupActionSignersResponseb\x06proto3' + serialized_pb=b'\n\x0eplatform.proto\x12\x19org.dash.platform.dapi.v0\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xea\x01\n\x1bPlatformSubscriptionRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0H\x00\x1a\\\n\x1dPlatformSubscriptionRequestV0\x12;\n\x06\x66ilter\x18\x01 \x01(\x0b\x32+.org.dash.platform.dapi.v0.PlatformFilterV0B\t\n\x07version\"\x8c\x02\n\x1cPlatformSubscriptionResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0H\x00\x1a{\n\x1ePlatformSubscriptionResponseV0\x12\x1e\n\x16\x63lient_subscription_id\x18\x01 \x01(\t\x12\x39\n\x05\x65vent\x18\x02 \x01(\x0b\x32*.org.dash.platform.dapi.v0.PlatformEventV0B\t\n\x07version\"?\n\x1bStateTransitionResultFilter\x12\x14\n\x07tx_hash\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\n\n\x08_tx_hash\"\x9f\x01\n\x10PlatformFilterV0\x12\r\n\x03\x61ll\x18\x01 \x01(\x08H\x00\x12\x19\n\x0f\x62lock_committed\x18\x02 \x01(\x08H\x00\x12Y\n\x17state_transition_result\x18\x03 \x01(\x0b\x32\x36.org.dash.platform.dapi.v0.StateTransitionResultFilterH\x00\x42\x06\n\x04kind\"\x8d\x04\n\x0fPlatformEventV0\x12T\n\x0f\x62lock_committed\x18\x01 \x01(\x0b\x32\x39.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommittedH\x00\x12i\n\x1astate_transition_finalized\x18\x02 \x01(\x0b\x32\x43.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalizedH\x00\x1aO\n\rBlockMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x13\n\x07time_ms\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rblock_id_hash\x18\x03 \x01(\x0c\x1aj\n\x0e\x42lockCommitted\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x10\n\x08tx_count\x18\x02 \x01(\r\x1as\n\x18StateTransitionFinalized\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x0f\n\x07tx_hash\x18\x02 \x01(\x0c\x42\x07\n\x05\x65vent\"\x81\x01\n\x05Proof\x12\x15\n\rgrovedb_proof\x18\x01 \x01(\x0c\x12\x13\n\x0bquorum_hash\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\r\n\x05round\x18\x04 \x01(\r\x12\x15\n\rblock_id_hash\x18\x05 \x01(\x0c\x12\x13\n\x0bquorum_type\x18\x06 \x01(\r\"\x98\x01\n\x10ResponseMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12 \n\x18\x63ore_chain_locked_height\x18\x02 \x01(\r\x12\r\n\x05\x65poch\x18\x03 \x01(\r\x12\x13\n\x07time_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x18\n\x10protocol_version\x18\x05 \x01(\r\x12\x10\n\x08\x63hain_id\x18\x06 \x01(\t\"L\n\x1dStateTransitionBroadcastError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\";\n\x1f\x42roadcastStateTransitionRequest\x12\x18\n\x10state_transition\x18\x01 \x01(\x0c\"\"\n BroadcastStateTransitionResponse\"\xa4\x01\n\x12GetIdentityRequest\x12P\n\x02v0\x18\x01 \x01(\x0b\x32\x42.org.dash.platform.dapi.v0.GetIdentityRequest.GetIdentityRequestV0H\x00\x1a\x31\n\x14GetIdentityRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xc1\x01\n\x17GetIdentityNonceRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityNonceRequest.GetIdentityNonceRequestV0H\x00\x1a?\n\x19GetIdentityNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xf6\x01\n\x1fGetIdentityContractNonceRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest.GetIdentityContractNonceRequestV0H\x00\x1a\\\n!GetIdentityContractNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xc0\x01\n\x19GetIdentityBalanceRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetIdentityBalanceRequest.GetIdentityBalanceRequestV0H\x00\x1a\x38\n\x1bGetIdentityBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xec\x01\n$GetIdentityBalanceAndRevisionRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest.GetIdentityBalanceAndRevisionRequestV0H\x00\x1a\x43\n&GetIdentityBalanceAndRevisionRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9e\x02\n\x13GetIdentityResponse\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetIdentityResponse.GetIdentityResponseV0H\x00\x1a\xa7\x01\n\x15GetIdentityResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbc\x02\n\x18GetIdentityNonceResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetIdentityNonceResponse.GetIdentityNonceResponseV0H\x00\x1a\xb6\x01\n\x1aGetIdentityNonceResponseV0\x12\x1c\n\x0eidentity_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xe5\x02\n GetIdentityContractNonceResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse.GetIdentityContractNonceResponseV0H\x00\x1a\xc7\x01\n\"GetIdentityContractNonceResponseV0\x12%\n\x17identity_contract_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n\x1aGetIdentityBalanceResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetIdentityBalanceResponse.GetIdentityBalanceResponseV0H\x00\x1a\xb1\x01\n\x1cGetIdentityBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb1\x04\n%GetIdentityBalanceAndRevisionResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0H\x00\x1a\x84\x03\n\'GetIdentityBalanceAndRevisionResponseV0\x12\x9b\x01\n\x14\x62\x61lance_and_revision\x18\x01 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0.BalanceAndRevisionH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x12\x42\x61lanceAndRevision\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x14\n\x08revision\x18\x02 \x01(\x04\x42\x02\x30\x01\x42\x08\n\x06resultB\t\n\x07version\"\xd1\x01\n\x0eKeyRequestType\x12\x36\n\x08\x61ll_keys\x18\x01 \x01(\x0b\x32\".org.dash.platform.dapi.v0.AllKeysH\x00\x12@\n\rspecific_keys\x18\x02 \x01(\x0b\x32\'.org.dash.platform.dapi.v0.SpecificKeysH\x00\x12:\n\nsearch_key\x18\x03 \x01(\x0b\x32$.org.dash.platform.dapi.v0.SearchKeyH\x00\x42\t\n\x07request\"\t\n\x07\x41llKeys\"\x1f\n\x0cSpecificKeys\x12\x0f\n\x07key_ids\x18\x01 \x03(\r\"\xb6\x01\n\tSearchKey\x12I\n\x0bpurpose_map\x18\x01 \x03(\x0b\x32\x34.org.dash.platform.dapi.v0.SearchKey.PurposeMapEntry\x1a^\n\x0fPurposeMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.org.dash.platform.dapi.v0.SecurityLevelMap:\x02\x38\x01\"\xbf\x02\n\x10SecurityLevelMap\x12]\n\x12security_level_map\x18\x01 \x03(\x0b\x32\x41.org.dash.platform.dapi.v0.SecurityLevelMap.SecurityLevelMapEntry\x1aw\n\x15SecurityLevelMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12M\n\x05value\x18\x02 \x01(\x0e\x32>.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType:\x02\x38\x01\"S\n\x12KeyKindRequestType\x12\x1f\n\x1b\x43URRENT_KEY_OF_KIND_REQUEST\x10\x00\x12\x1c\n\x18\x41LL_KEYS_OF_KIND_REQUEST\x10\x01\"\xda\x02\n\x16GetIdentityKeysRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetIdentityKeysRequest.GetIdentityKeysRequestV0H\x00\x1a\xda\x01\n\x18GetIdentityKeysRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12?\n\x0crequest_type\x18\x02 \x01(\x0b\x32).org.dash.platform.dapi.v0.KeyRequestType\x12+\n\x05limit\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\x99\x03\n\x17GetIdentityKeysResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0H\x00\x1a\x96\x02\n\x19GetIdentityKeysResponseV0\x12\x61\n\x04keys\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0.KeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1a\n\x04Keys\x12\x12\n\nkeys_bytes\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xef\x02\n GetIdentitiesContractKeysRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest.GetIdentitiesContractKeysRequestV0H\x00\x1a\xd1\x01\n\"GetIdentitiesContractKeysRequestV0\x12\x16\n\x0eidentities_ids\x18\x01 \x03(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\x1f\n\x12\x64ocument_type_name\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x08purposes\x18\x04 \x03(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x15\n\x13_document_type_nameB\t\n\x07version\"\xdf\x06\n!GetIdentitiesContractKeysResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0H\x00\x1a\xbe\x05\n#GetIdentitiesContractKeysResponseV0\x12\x8a\x01\n\x0fidentities_keys\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentitiesKeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aY\n\x0bPurposeKeys\x12\x36\n\x07purpose\x18\x01 \x01(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\x12\n\nkeys_bytes\x18\x02 \x03(\x0c\x1a\x9f\x01\n\x0cIdentityKeys\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12z\n\x04keys\x18\x02 \x03(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.PurposeKeys\x1a\x90\x01\n\x0eIdentitiesKeys\x12~\n\x07\x65ntries\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentityKeysB\x08\n\x06resultB\t\n\x07version\"\xa4\x02\n*GetEvonodesProposedEpochBlocksByIdsRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest.GetEvonodesProposedEpochBlocksByIdsRequestV0H\x00\x1ah\n,GetEvonodesProposedEpochBlocksByIdsRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0b\n\x03ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x08\n\x06_epochB\t\n\x07version\"\x92\x06\n&GetEvonodesProposedEpochBlocksResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0H\x00\x1a\xe2\x04\n(GetEvonodesProposedEpochBlocksResponseV0\x12\xb1\x01\n#evonodes_proposed_block_counts_info\x18\x01 \x01(\x0b\x32\x81\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodesProposedBlocksH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x15\x45vonodeProposedBlocks\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x11\n\x05\x63ount\x18\x02 \x01(\x04\x42\x02\x30\x01\x1a\xc4\x01\n\x16\x45vonodesProposedBlocks\x12\xa9\x01\n\x1e\x65vonodes_proposed_block_counts\x18\x01 \x03(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodeProposedBlocksB\x08\n\x06resultB\t\n\x07version\"\xf2\x02\n,GetEvonodesProposedEpochBlocksByRangeRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest.GetEvonodesProposedEpochBlocksByRangeRequestV0H\x00\x1a\xaf\x01\n.GetEvonodesProposedEpochBlocksByRangeRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x02 \x01(\rH\x02\x88\x01\x01\x12\x15\n\x0bstart_after\x18\x03 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x04 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x07\n\x05startB\x08\n\x06_epochB\x08\n\x06_limitB\t\n\x07version\"\xcd\x01\n\x1cGetIdentitiesBalancesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest.GetIdentitiesBalancesRequestV0H\x00\x1a<\n\x1eGetIdentitiesBalancesRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9f\x05\n\x1dGetIdentitiesBalancesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0H\x00\x1a\x8a\x04\n\x1fGetIdentitiesBalancesResponseV0\x12\x8a\x01\n\x13identities_balances\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentitiesBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aL\n\x0fIdentityBalance\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x8f\x01\n\x12IdentitiesBalances\x12y\n\x07\x65ntries\x18\x01 \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentityBalanceB\x08\n\x06resultB\t\n\x07version\"\xb4\x01\n\x16GetDataContractRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetDataContractRequest.GetDataContractRequestV0H\x00\x1a\x35\n\x18GetDataContractRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xb3\x02\n\x17GetDataContractResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractResponse.GetDataContractResponseV0H\x00\x1a\xb0\x01\n\x19GetDataContractResponseV0\x12\x17\n\rdata_contract\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb9\x01\n\x17GetDataContractsRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractsRequest.GetDataContractsRequestV0H\x00\x1a\x37\n\x19GetDataContractsRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xcf\x04\n\x18GetDataContractsResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetDataContractsResponse.GetDataContractsResponseV0H\x00\x1a[\n\x11\x44\x61taContractEntry\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x32\n\rdata_contract\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x1au\n\rDataContracts\x12\x64\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32\x45.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractEntry\x1a\xf5\x01\n\x1aGetDataContractsResponseV0\x12[\n\x0e\x64\x61ta_contracts\x18\x01 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc5\x02\n\x1dGetDataContractHistoryRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetDataContractHistoryRequest.GetDataContractHistoryRequestV0H\x00\x1a\xb0\x01\n\x1fGetDataContractHistoryRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0bstart_at_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xb2\x05\n\x1eGetDataContractHistoryResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0H\x00\x1a\x9a\x04\n GetDataContractHistoryResponseV0\x12\x8f\x01\n\x15\x64\x61ta_contract_history\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a;\n\x18\x44\x61taContractHistoryEntry\x12\x10\n\x04\x64\x61te\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05value\x18\x02 \x01(\x0c\x1a\xaa\x01\n\x13\x44\x61taContractHistory\x12\x92\x01\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32s.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryEntryB\x08\n\x06resultB\t\n\x07version\"\xb2\x02\n\x13GetDocumentsRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetDocumentsRequest.GetDocumentsRequestV0H\x00\x1a\xbb\x01\n\x15GetDocumentsRequestV0\x12\x18\n\x10\x64\x61ta_contract_id\x18\x01 \x01(\x0c\x12\x15\n\rdocument_type\x18\x02 \x01(\t\x12\r\n\x05where\x18\x03 \x01(\x0c\x12\x10\n\x08order_by\x18\x04 \x01(\x0c\x12\r\n\x05limit\x18\x05 \x01(\r\x12\x15\n\x0bstart_after\x18\x06 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x07 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x08 \x01(\x08\x42\x07\n\x05startB\t\n\x07version\"\x95\x03\n\x14GetDocumentsResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0H\x00\x1a\x9b\x02\n\x16GetDocumentsResponseV0\x12\x65\n\tdocuments\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0.DocumentsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1e\n\tDocuments\x12\x11\n\tdocuments\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xed\x01\n!GetIdentityByPublicKeyHashRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest.GetIdentityByPublicKeyHashRequestV0H\x00\x1aM\n#GetIdentityByPublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xda\x02\n\"GetIdentityByPublicKeyHashResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse.GetIdentityByPublicKeyHashResponseV0H\x00\x1a\xb6\x01\n$GetIdentityByPublicKeyHashResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n*GetIdentityByNonUniquePublicKeyHashRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest.GetIdentityByNonUniquePublicKeyHashRequestV0H\x00\x1a\x80\x01\n,GetIdentityByNonUniquePublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\x18\n\x0bstart_after\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x0e\n\x0c_start_afterB\t\n\x07version\"\xd6\x06\n+GetIdentityByNonUniquePublicKeyHashResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0H\x00\x1a\x96\x05\n-GetIdentityByNonUniquePublicKeyHashResponseV0\x12\x9a\x01\n\x08identity\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityResponseH\x00\x12\x9d\x01\n\x05proof\x18\x02 \x01(\x0b\x32\x8b\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityProvedResponseH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x36\n\x10IdentityResponse\x12\x15\n\x08identity\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x0b\n\t_identity\x1a\xa6\x01\n\x16IdentityProvedResponse\x12P\n&grovedb_identity_public_key_hash_proof\x18\x01 \x01(\x0b\x32 .org.dash.platform.dapi.v0.Proof\x12!\n\x14identity_proof_bytes\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x17\n\x15_identity_proof_bytesB\x08\n\x06resultB\t\n\x07version\"\xfb\x01\n#WaitForStateTransitionResultRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0H\x00\x1aU\n%WaitForStateTransitionResultRequestV0\x12\x1d\n\x15state_transition_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x99\x03\n$WaitForStateTransitionResultResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0H\x00\x1a\xef\x01\n&WaitForStateTransitionResultResponseV0\x12I\n\x05\x65rror\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.StateTransitionBroadcastErrorH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x19GetConsensusParamsRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetConsensusParamsRequest.GetConsensusParamsRequestV0H\x00\x1a<\n\x1bGetConsensusParamsRequestV0\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9c\x04\n\x1aGetConsensusParamsResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetConsensusParamsResponse.GetConsensusParamsResponseV0H\x00\x1aP\n\x14\x43onsensusParamsBlock\x12\x11\n\tmax_bytes\x18\x01 \x01(\t\x12\x0f\n\x07max_gas\x18\x02 \x01(\t\x12\x14\n\x0ctime_iota_ms\x18\x03 \x01(\t\x1a\x62\n\x17\x43onsensusParamsEvidence\x12\x1a\n\x12max_age_num_blocks\x18\x01 \x01(\t\x12\x18\n\x10max_age_duration\x18\x02 \x01(\t\x12\x11\n\tmax_bytes\x18\x03 \x01(\t\x1a\xda\x01\n\x1cGetConsensusParamsResponseV0\x12Y\n\x05\x62lock\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsBlock\x12_\n\x08\x65vidence\x18\x02 \x01(\x0b\x32M.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsEvidenceB\t\n\x07version\"\xe4\x01\n%GetProtocolVersionUpgradeStateRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest.GetProtocolVersionUpgradeStateRequestV0H\x00\x1a\x38\n\'GetProtocolVersionUpgradeStateRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xb5\x05\n&GetProtocolVersionUpgradeStateResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0H\x00\x1a\x85\x04\n(GetProtocolVersionUpgradeStateResponseV0\x12\x87\x01\n\x08versions\x18\x01 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x96\x01\n\x08Versions\x12\x89\x01\n\x08versions\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionEntry\x1a:\n\x0cVersionEntry\x12\x16\n\x0eversion_number\x18\x01 \x01(\r\x12\x12\n\nvote_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xa3\x02\n*GetProtocolVersionUpgradeVoteStatusRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest.GetProtocolVersionUpgradeVoteStatusRequestV0H\x00\x1ag\n,GetProtocolVersionUpgradeVoteStatusRequestV0\x12\x19\n\x11start_pro_tx_hash\x18\x01 \x01(\x0c\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xef\x05\n+GetProtocolVersionUpgradeVoteStatusResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0H\x00\x1a\xaf\x04\n-GetProtocolVersionUpgradeVoteStatusResponseV0\x12\x98\x01\n\x08versions\x18\x01 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignalsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xaf\x01\n\x0eVersionSignals\x12\x9c\x01\n\x0fversion_signals\x18\x01 \x03(\x0b\x32\x82\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignal\x1a\x35\n\rVersionSignal\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07version\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xf5\x01\n\x14GetEpochsInfoRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetEpochsInfoRequest.GetEpochsInfoRequestV0H\x00\x1a|\n\x16GetEpochsInfoRequestV0\x12\x31\n\x0bstart_epoch\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\x11\n\tascending\x18\x03 \x01(\x08\x12\r\n\x05prove\x18\x04 \x01(\x08\x42\t\n\x07version\"\x99\x05\n\x15GetEpochsInfoResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0H\x00\x1a\x9c\x04\n\x17GetEpochsInfoResponseV0\x12\x65\n\x06\x65pochs\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1au\n\nEpochInfos\x12g\n\x0b\x65poch_infos\x18\x01 \x03(\x0b\x32R.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfo\x1a\xa6\x01\n\tEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x16\n\nstart_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xbf\x02\n\x1dGetFinalizedEpochInfosRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest.GetFinalizedEpochInfosRequestV0H\x00\x1a\xaa\x01\n\x1fGetFinalizedEpochInfosRequestV0\x12\x19\n\x11start_epoch_index\x18\x01 \x01(\r\x12\"\n\x1astart_epoch_index_included\x18\x02 \x01(\x08\x12\x17\n\x0f\x65nd_epoch_index\x18\x03 \x01(\r\x12 \n\x18\x65nd_epoch_index_included\x18\x04 \x01(\x08\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xbd\t\n\x1eGetFinalizedEpochInfosResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0H\x00\x1a\xa5\x08\n GetFinalizedEpochInfosResponseV0\x12\x80\x01\n\x06\x65pochs\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xa4\x01\n\x13\x46inalizedEpochInfos\x12\x8c\x01\n\x15\x66inalized_epoch_infos\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfo\x1a\x9f\x04\n\x12\x46inalizedEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x1c\n\x10\x66irst_block_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\r\x12!\n\x15total_blocks_in_epoch\x18\x07 \x01(\x04\x42\x02\x30\x01\x12*\n\"next_epoch_start_core_block_height\x18\x08 \x01(\r\x12!\n\x15total_processing_fees\x18\t \x01(\x04\x42\x02\x30\x01\x12*\n\x1etotal_distributed_storage_fees\x18\n \x01(\x04\x42\x02\x30\x01\x12&\n\x1atotal_created_storage_fees\x18\x0b \x01(\x04\x42\x02\x30\x01\x12\x1e\n\x12\x63ore_block_rewards\x18\x0c \x01(\x04\x42\x02\x30\x01\x12\x81\x01\n\x0f\x62lock_proposers\x18\r \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.BlockProposer\x1a\x39\n\rBlockProposer\x12\x13\n\x0bproposer_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x62lock_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xde\x04\n\x1cGetContestedResourcesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0H\x00\x1a\xcc\x03\n\x1eGetContestedResourcesRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x1a\n\x12start_index_values\x18\x04 \x03(\x0c\x12\x18\n\x10\x65nd_index_values\x18\x05 \x03(\x0c\x12\x89\x01\n\x13start_at_value_info\x18\x06 \x01(\x0b\x32g.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0.StartAtValueInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1a\x45\n\x10StartAtValueInfo\x12\x13\n\x0bstart_value\x18\x01 \x01(\x0c\x12\x1c\n\x14start_value_included\x18\x02 \x01(\x08\x42\x16\n\x14_start_at_value_infoB\x08\n\x06_countB\t\n\x07version\"\x88\x04\n\x1dGetContestedResourcesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0H\x00\x1a\xf3\x02\n\x1fGetContestedResourcesResponseV0\x12\x95\x01\n\x19\x63ontested_resource_values\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0.ContestedResourceValuesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a<\n\x17\x43ontestedResourceValues\x12!\n\x19\x63ontested_resource_values\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x05\n\x1cGetVotePollsByEndDateRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0H\x00\x1a\xc0\x04\n\x1eGetVotePollsByEndDateRequestV0\x12\x84\x01\n\x0fstart_time_info\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.StartAtTimeInfoH\x00\x88\x01\x01\x12\x80\x01\n\rend_time_info\x18\x02 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.EndAtTimeInfoH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x11\n\tascending\x18\x05 \x01(\x08\x12\r\n\x05prove\x18\x06 \x01(\x08\x1aI\n\x0fStartAtTimeInfo\x12\x19\n\rstart_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13start_time_included\x18\x02 \x01(\x08\x1a\x43\n\rEndAtTimeInfo\x12\x17\n\x0b\x65nd_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x65nd_time_included\x18\x02 \x01(\x08\x42\x12\n\x10_start_time_infoB\x10\n\x0e_end_time_infoB\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07version\"\x83\x06\n\x1dGetVotePollsByEndDateResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0H\x00\x1a\xee\x04\n\x1fGetVotePollsByEndDateResponseV0\x12\x9c\x01\n\x18vote_polls_by_timestamps\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestampsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aV\n\x1eSerializedVotePollsByTimestamp\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x15serialized_vote_polls\x18\x02 \x03(\x0c\x1a\xd7\x01\n\x1fSerializedVotePollsByTimestamps\x12\x99\x01\n\x18vote_polls_by_timestamps\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestamp\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xff\x06\n$GetContestedResourceVoteStateRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0H\x00\x1a\xd5\x05\n&GetContestedResourceVoteStateRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x86\x01\n\x0bresult_type\x18\x05 \x01(\x0e\x32q.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.ResultType\x12\x36\n.allow_include_locked_and_abstaining_vote_tally\x18\x06 \x01(\x08\x12\xa3\x01\n\x18start_at_identifier_info\x18\x07 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x08 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\"I\n\nResultType\x12\r\n\tDOCUMENTS\x10\x00\x12\x0e\n\nVOTE_TALLY\x10\x01\x12\x1c\n\x18\x44OCUMENTS_AND_VOTE_TALLY\x10\x02\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\x94\x0c\n%GetContestedResourceVoteStateResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0H\x00\x1a\xe7\n\n\'GetContestedResourceVoteStateResponseV0\x12\xae\x01\n\x1d\x63ontested_resource_contenders\x18\x01 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.ContestedResourceContendersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xda\x03\n\x10\x46inishedVoteInfo\x12\xad\x01\n\x15\x66inished_vote_outcome\x18\x01 \x01(\x0e\x32\x8d\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfo.FinishedVoteOutcome\x12\x1f\n\x12won_by_identity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12$\n\x18\x66inished_at_block_height\x18\x03 \x01(\x04\x42\x02\x30\x01\x12%\n\x1d\x66inished_at_core_block_height\x18\x04 \x01(\r\x12%\n\x19\x66inished_at_block_time_ms\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x66inished_at_epoch\x18\x06 \x01(\r\"O\n\x13\x46inishedVoteOutcome\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\n\n\x06LOCKED\x10\x01\x12\x16\n\x12NO_PREVIOUS_WINNER\x10\x02\x42\x15\n\x13_won_by_identity_id\x1a\xc4\x03\n\x1b\x43ontestedResourceContenders\x12\x86\x01\n\ncontenders\x18\x01 \x03(\x0b\x32r.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.Contender\x12\x1f\n\x12\x61\x62stain_vote_tally\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0flock_vote_tally\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x9a\x01\n\x12\x66inished_vote_info\x18\x04 \x01(\x0b\x32y.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfoH\x02\x88\x01\x01\x42\x15\n\x13_abstain_vote_tallyB\x12\n\x10_lock_vote_tallyB\x15\n\x13_finished_vote_info\x1ak\n\tContender\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x17\n\nvote_count\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08\x64ocument\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x42\r\n\x0b_vote_countB\x0b\n\t_documentB\x08\n\x06resultB\t\n\x07version\"\xd5\x05\n,GetContestedResourceVotersForIdentityRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0H\x00\x1a\x92\x04\n.GetContestedResourceVotersForIdentityRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x15\n\rcontestant_id\x18\x05 \x01(\x0c\x12\xb4\x01\n\x18start_at_identifier_info\x18\x06 \x01(\x0b\x32\x8c\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\xf1\x04\n-GetContestedResourceVotersForIdentityResponse\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0H\x00\x1a\xab\x03\n/GetContestedResourceVotersForIdentityResponseV0\x12\xb6\x01\n\x19\x63ontested_resource_voters\x18\x01 \x01(\x0b\x32\x90\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0.ContestedResourceVotersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x43\n\x17\x43ontestedResourceVoters\x12\x0e\n\x06voters\x18\x01 \x03(\x0c\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xad\x05\n(GetContestedResourceIdentityVotesRequest\x12|\n\x02v0\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0H\x00\x1a\xf7\x03\n*GetContestedResourceIdentityVotesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0forder_ascending\x18\x04 \x01(\x08\x12\xae\x01\n\x1astart_at_vote_poll_id_info\x18\x05 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0.StartAtVotePollIdInfoH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x1a\x61\n\x15StartAtVotePollIdInfo\x12 \n\x18start_at_poll_identifier\x18\x01 \x01(\x0c\x12&\n\x1estart_poll_identifier_included\x18\x02 \x01(\x08\x42\x1d\n\x1b_start_at_vote_poll_id_infoB\t\n\x07version\"\xc8\n\n)GetContestedResourceIdentityVotesResponse\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0H\x00\x1a\x8f\t\n+GetContestedResourceIdentityVotesResponseV0\x12\xa1\x01\n\x05votes\x18\x01 \x01(\x0b\x32\x8f\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVotesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xf7\x01\n\x1e\x43ontestedResourceIdentityVotes\x12\xba\x01\n!contested_resource_identity_votes\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVote\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x1a\xad\x02\n\x12ResourceVoteChoice\x12\xad\x01\n\x10vote_choice_type\x18\x01 \x01(\x0e\x32\x92\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoice.VoteChoiceType\x12\x18\n\x0bidentity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\"=\n\x0eVoteChoiceType\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\x0b\n\x07\x41\x42STAIN\x10\x01\x12\x08\n\x04LOCK\x10\x02\x42\x0e\n\x0c_identity_id\x1a\x95\x02\n\x1d\x43ontestedResourceIdentityVote\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\'\n\x1fserialized_index_storage_values\x18\x03 \x03(\x0c\x12\x99\x01\n\x0bvote_choice\x18\x04 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoiceB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n%GetPrefundedSpecializedBalanceRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest.GetPrefundedSpecializedBalanceRequestV0H\x00\x1a\x44\n\'GetPrefundedSpecializedBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xed\x02\n&GetPrefundedSpecializedBalanceResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse.GetPrefundedSpecializedBalanceResponseV0H\x00\x1a\xbd\x01\n(GetPrefundedSpecializedBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xd0\x01\n GetTotalCreditsInPlatformRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest.GetTotalCreditsInPlatformRequestV0H\x00\x1a\x33\n\"GetTotalCreditsInPlatformRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xd9\x02\n!GetTotalCreditsInPlatformResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse.GetTotalCreditsInPlatformResponseV0H\x00\x1a\xb8\x01\n#GetTotalCreditsInPlatformResponseV0\x12\x15\n\x07\x63redits\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x16GetPathElementsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetPathElementsRequest.GetPathElementsRequestV0H\x00\x1a\x45\n\x18GetPathElementsRequestV0\x12\x0c\n\x04path\x18\x01 \x03(\x0c\x12\x0c\n\x04keys\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xa3\x03\n\x17GetPathElementsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0H\x00\x1a\xa0\x02\n\x19GetPathElementsResponseV0\x12i\n\x08\x65lements\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0.ElementsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1c\n\x08\x45lements\x12\x10\n\x08\x65lements\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\x81\x01\n\x10GetStatusRequest\x12L\n\x02v0\x18\x01 \x01(\x0b\x32>.org.dash.platform.dapi.v0.GetStatusRequest.GetStatusRequestV0H\x00\x1a\x14\n\x12GetStatusRequestV0B\t\n\x07version\"\xd0\x10\n\x11GetStatusResponse\x12N\n\x02v0\x18\x01 \x01(\x0b\x32@.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0H\x00\x1a\xdf\x0f\n\x13GetStatusResponseV0\x12Y\n\x07version\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version\x12S\n\x04node\x18\x02 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Node\x12U\n\x05\x63hain\x18\x03 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Chain\x12Y\n\x07network\x18\x04 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Network\x12^\n\nstate_sync\x18\x05 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.StateSync\x12S\n\x04time\x18\x06 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Time\x1a\xee\x04\n\x07Version\x12\x63\n\x08software\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Software\x12\x63\n\x08protocol\x18\x02 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol\x1a^\n\x08Software\x12\x0c\n\x04\x64\x61pi\x18\x01 \x01(\t\x12\x12\n\x05\x64rive\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ntenderdash\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_driveB\r\n\x0b_tenderdash\x1a\xb8\x02\n\x08Protocol\x12p\n\ntenderdash\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Tenderdash\x12\x66\n\x05\x64rive\x18\x02 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Drive\x1a(\n\nTenderdash\x12\x0b\n\x03p2p\x18\x01 \x01(\r\x12\r\n\x05\x62lock\x18\x02 \x01(\r\x1a(\n\x05\x44rive\x12\x0e\n\x06latest\x18\x03 \x01(\r\x12\x0f\n\x07\x63urrent\x18\x04 \x01(\r\x1a\x7f\n\x04Time\x12\x11\n\x05local\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x05\x62lock\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x12\x18\n\x07genesis\x18\x03 \x01(\x04\x42\x02\x30\x01H\x01\x88\x01\x01\x12\x12\n\x05\x65poch\x18\x04 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_blockB\n\n\x08_genesisB\x08\n\x06_epoch\x1a<\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x18\n\x0bpro_tx_hash\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x0e\n\x0c_pro_tx_hash\x1a\xb3\x02\n\x05\x43hain\x12\x13\n\x0b\x63\x61tching_up\x18\x01 \x01(\x08\x12\x19\n\x11latest_block_hash\x18\x02 \x01(\x0c\x12\x17\n\x0flatest_app_hash\x18\x03 \x01(\x0c\x12\x1f\n\x13latest_block_height\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13\x65\x61rliest_block_hash\x18\x05 \x01(\x0c\x12\x19\n\x11\x65\x61rliest_app_hash\x18\x06 \x01(\x0c\x12!\n\x15\x65\x61rliest_block_height\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15max_peer_block_height\x18\t \x01(\x04\x42\x02\x30\x01\x12%\n\x18\x63ore_chain_locked_height\x18\n \x01(\rH\x00\x88\x01\x01\x42\x1b\n\x19_core_chain_locked_height\x1a\x43\n\x07Network\x12\x10\n\x08\x63hain_id\x18\x01 \x01(\t\x12\x13\n\x0bpeers_count\x18\x02 \x01(\r\x12\x11\n\tlistening\x18\x03 \x01(\x08\x1a\x85\x02\n\tStateSync\x12\x1d\n\x11total_synced_time\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1a\n\x0eremaining_time\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0ftotal_snapshots\x18\x03 \x01(\r\x12\"\n\x16\x63hunk_process_avg_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x0fsnapshot_height\x18\x05 \x01(\x04\x42\x02\x30\x01\x12!\n\x15snapshot_chunks_count\x18\x06 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x11\x62\x61\x63kfilled_blocks\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15\x62\x61\x63kfill_blocks_total\x18\x08 \x01(\x04\x42\x02\x30\x01\x42\t\n\x07version\"\xb1\x01\n\x1cGetCurrentQuorumsInfoRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest.GetCurrentQuorumsInfoRequestV0H\x00\x1a \n\x1eGetCurrentQuorumsInfoRequestV0B\t\n\x07version\"\xa1\x05\n\x1dGetCurrentQuorumsInfoResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.GetCurrentQuorumsInfoResponseV0H\x00\x1a\x46\n\x0bValidatorV0\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07node_ip\x18\x02 \x01(\t\x12\x11\n\tis_banned\x18\x03 \x01(\x08\x1a\xaf\x01\n\x0eValidatorSetV0\x12\x13\n\x0bquorum_hash\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ore_height\x18\x02 \x01(\r\x12U\n\x07members\x18\x03 \x03(\x0b\x32\x44.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorV0\x12\x1c\n\x14threshold_public_key\x18\x04 \x01(\x0c\x1a\x92\x02\n\x1fGetCurrentQuorumsInfoResponseV0\x12\x15\n\rquorum_hashes\x18\x01 \x03(\x0c\x12\x1b\n\x13\x63urrent_quorum_hash\x18\x02 \x01(\x0c\x12_\n\x0evalidator_sets\x18\x03 \x03(\x0b\x32G.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorSetV0\x12\x1b\n\x13last_block_proposer\x18\x04 \x01(\x0c\x12=\n\x08metadata\x18\x05 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\t\n\x07version\"\xf4\x01\n\x1fGetIdentityTokenBalancesRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest.GetIdentityTokenBalancesRequestV0H\x00\x1aZ\n!GetIdentityTokenBalancesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xad\x05\n GetIdentityTokenBalancesResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0H\x00\x1a\x8f\x04\n\"GetIdentityTokenBalancesResponseV0\x12\x86\x01\n\x0etoken_balances\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aG\n\x11TokenBalanceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x9a\x01\n\rTokenBalances\x12\x88\x01\n\x0etoken_balances\x18\x01 \x03(\x0b\x32p.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xfc\x01\n!GetIdentitiesTokenBalancesRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest.GetIdentitiesTokenBalancesRequestV0H\x00\x1a\\\n#GetIdentitiesTokenBalancesRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xf2\x05\n\"GetIdentitiesTokenBalancesResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0H\x00\x1a\xce\x04\n$GetIdentitiesTokenBalancesResponseV0\x12\x9b\x01\n\x17identity_token_balances\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aR\n\x19IdentityTokenBalanceEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\xb7\x01\n\x15IdentityTokenBalances\x12\x9d\x01\n\x17identity_token_balances\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xe8\x01\n\x1cGetIdentityTokenInfosRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest.GetIdentityTokenInfosRequestV0H\x00\x1aW\n\x1eGetIdentityTokenInfosRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\x98\x06\n\x1dGetIdentityTokenInfosResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0H\x00\x1a\x83\x05\n\x1fGetIdentityTokenInfosResponseV0\x12z\n\x0btoken_infos\x18\x01 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb0\x01\n\x0eTokenInfoEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x82\x01\n\x04info\x18\x02 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x8a\x01\n\nTokenInfos\x12|\n\x0btoken_infos\x18\x01 \x03(\x0b\x32g.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n\x1eGetIdentitiesTokenInfosRequest\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest.GetIdentitiesTokenInfosRequestV0H\x00\x1aY\n GetIdentitiesTokenInfosRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xca\x06\n\x1fGetIdentitiesTokenInfosResponse\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0H\x00\x1a\xaf\x05\n!GetIdentitiesTokenInfosResponseV0\x12\x8f\x01\n\x14identity_token_infos\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.IdentityTokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb7\x01\n\x0eTokenInfoEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x86\x01\n\x04info\x18\x02 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x97\x01\n\x12IdentityTokenInfos\x12\x80\x01\n\x0btoken_infos\x18\x01 \x03(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbf\x01\n\x17GetTokenStatusesRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetTokenStatusesRequest.GetTokenStatusesRequestV0H\x00\x1a=\n\x19GetTokenStatusesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xe7\x04\n\x18GetTokenStatusesResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0H\x00\x1a\xe1\x03\n\x1aGetTokenStatusesResponseV0\x12v\n\x0etoken_statuses\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x44\n\x10TokenStatusEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x13\n\x06paused\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_paused\x1a\x88\x01\n\rTokenStatuses\x12w\n\x0etoken_statuses\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusEntryB\x08\n\x06resultB\t\n\x07version\"\xef\x01\n#GetTokenDirectPurchasePricesRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest.GetTokenDirectPurchasePricesRequestV0H\x00\x1aI\n%GetTokenDirectPurchasePricesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x8b\t\n$GetTokenDirectPurchasePricesResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0H\x00\x1a\xe1\x07\n&GetTokenDirectPurchasePricesResponseV0\x12\xa9\x01\n\x1ctoken_direct_purchase_prices\x18\x01 \x01(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePricesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xa7\x01\n\x0fPricingSchedule\x12\x93\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PriceForQuantity\x1a\xe4\x01\n\x1dTokenDirectPurchasePriceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x15\n\x0b\x66ixed_price\x18\x02 \x01(\x04H\x00\x12\x90\x01\n\x0evariable_price\x18\x03 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PricingScheduleH\x00\x42\x07\n\x05price\x1a\xc8\x01\n\x19TokenDirectPurchasePrices\x12\xaa\x01\n\x1btoken_direct_purchase_price\x18\x01 \x03(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePriceEntryB\x08\n\x06resultB\t\n\x07version\"\xce\x01\n\x1bGetTokenContractInfoRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenContractInfoRequest.GetTokenContractInfoRequestV0H\x00\x1a@\n\x1dGetTokenContractInfoRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xfb\x03\n\x1cGetTokenContractInfoResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0H\x00\x1a\xe9\x02\n\x1eGetTokenContractInfoResponseV0\x12|\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0.TokenContractInfoDataH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aM\n\x15TokenContractInfoData\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xef\x04\n)GetTokenPreProgrammedDistributionsRequest\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0H\x00\x1a\xb6\x03\n+GetTokenPreProgrammedDistributionsRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x98\x01\n\rstart_at_info\x18\x02 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0.StartAtInfoH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x1a\x9a\x01\n\x0bStartAtInfo\x12\x15\n\rstart_time_ms\x18\x01 \x01(\x04\x12\x1c\n\x0fstart_recipient\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12%\n\x18start_recipient_included\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_start_recipientB\x1b\n\x19_start_recipient_includedB\x10\n\x0e_start_at_infoB\x08\n\x06_limitB\t\n\x07version\"\xec\x07\n*GetTokenPreProgrammedDistributionsResponse\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0H\x00\x1a\xaf\x06\n,GetTokenPreProgrammedDistributionsResponseV0\x12\xa5\x01\n\x13token_distributions\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a>\n\x16TokenDistributionEntry\x12\x14\n\x0crecipient_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x1a\xd4\x01\n\x1bTokenTimedDistributionEntry\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\xa1\x01\n\rdistributions\x18\x02 \x03(\x0b\x32\x89\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionEntry\x1a\xc3\x01\n\x12TokenDistributions\x12\xac\x01\n\x13token_distributions\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenTimedDistributionEntryB\x08\n\x06resultB\t\n\x07version\"\x82\x04\n-GetTokenPerpetualDistributionLastClaimRequest\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.GetTokenPerpetualDistributionLastClaimRequestV0H\x00\x1aI\n\x11\x43ontractTokenInfo\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\r\x1a\xf1\x01\n/GetTokenPerpetualDistributionLastClaimRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12v\n\rcontract_info\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.ContractTokenInfoH\x00\x88\x01\x01\x12\x13\n\x0bidentity_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x10\n\x0e_contract_infoB\t\n\x07version\"\x93\x05\n.GetTokenPerpetualDistributionLastClaimResponse\x12\x88\x01\n\x02v0\x18\x01 \x01(\x0b\x32z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0H\x00\x1a\xca\x03\n0GetTokenPerpetualDistributionLastClaimResponseV0\x12\x9f\x01\n\nlast_claim\x18\x01 \x01(\x0b\x32\x88\x01.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0.LastClaimInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\rLastClaimInfo\x12\x1a\n\x0ctimestamp_ms\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x1a\n\x0c\x62lock_height\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x12\x0f\n\x05\x65poch\x18\x03 \x01(\rH\x00\x12\x13\n\traw_bytes\x18\x04 \x01(\x0cH\x00\x42\t\n\x07paid_atB\x08\n\x06resultB\t\n\x07version\"\xca\x01\n\x1aGetTokenTotalSupplyRequest\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest.GetTokenTotalSupplyRequestV0H\x00\x1a?\n\x1cGetTokenTotalSupplyRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xaf\x04\n\x1bGetTokenTotalSupplyResponse\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0H\x00\x1a\xa0\x03\n\x1dGetTokenTotalSupplyResponseV0\x12\x88\x01\n\x12token_total_supply\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0.TokenTotalSupplyEntryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\x15TokenTotalSupplyEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x30\n(total_aggregated_amount_in_user_accounts\x18\x02 \x01(\x04\x12\x1b\n\x13total_system_amount\x18\x03 \x01(\x04\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x01\n\x13GetGroupInfoRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetGroupInfoRequest.GetGroupInfoRequestV0H\x00\x1a\\\n\x15GetGroupInfoRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xd4\x05\n\x14GetGroupInfoResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0H\x00\x1a\xda\x04\n\x16GetGroupInfoResponseV0\x12\x66\n\ngroup_info\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x98\x01\n\x0eGroupInfoEntry\x12h\n\x07members\x18\x01 \x03(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x02 \x01(\r\x1a\x8a\x01\n\tGroupInfo\x12n\n\ngroup_info\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoEntryH\x00\x88\x01\x01\x42\r\n\x0b_group_infoB\x08\n\x06resultB\t\n\x07version\"\xed\x03\n\x14GetGroupInfosRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfosRequest.GetGroupInfosRequestV0H\x00\x1au\n\x1cStartAtGroupContractPosition\x12%\n\x1dstart_group_contract_position\x18\x01 \x01(\r\x12.\n&start_group_contract_position_included\x18\x02 \x01(\x08\x1a\xfc\x01\n\x16GetGroupInfosRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12{\n start_at_group_contract_position\x18\x02 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupInfosRequest.StartAtGroupContractPositionH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x42#\n!_start_at_group_contract_positionB\x08\n\x06_countB\t\n\x07version\"\xff\x05\n\x15GetGroupInfosResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0H\x00\x1a\x82\x05\n\x17GetGroupInfosResponseV0\x12j\n\x0bgroup_infos\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\xc3\x01\n\x16GroupPositionInfoEntry\x12\x1f\n\x17group_contract_position\x18\x01 \x01(\r\x12j\n\x07members\x18\x02 \x03(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x03 \x01(\r\x1a\x82\x01\n\nGroupInfos\x12t\n\x0bgroup_infos\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupPositionInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbe\x04\n\x16GetGroupActionsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetGroupActionsRequest.GetGroupActionsRequestV0H\x00\x1aL\n\x0fStartAtActionId\x12\x17\n\x0fstart_action_id\x18\x01 \x01(\x0c\x12 \n\x18start_action_id_included\x18\x02 \x01(\x08\x1a\xc8\x02\n\x18GetGroupActionsRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12N\n\x06status\x18\x03 \x01(\x0e\x32>.org.dash.platform.dapi.v0.GetGroupActionsRequest.ActionStatus\x12\x62\n\x12start_at_action_id\x18\x04 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetGroupActionsRequest.StartAtActionIdH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x42\x15\n\x13_start_at_action_idB\x08\n\x06_count\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\xd6\x1e\n\x17GetGroupActionsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0H\x00\x1a\xd3\x1d\n\x19GetGroupActionsResponseV0\x12r\n\rgroup_actions\x18\x01 \x01(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a[\n\tMintEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0crecipient_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a[\n\tBurnEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0c\x62urn_from_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aJ\n\x0b\x46reezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aL\n\rUnfreezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x66\n\x17\x44\x65stroyFrozenFundsEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x13SharedEncryptedNote\x12\x18\n\x10sender_key_index\x18\x01 \x01(\r\x12\x1b\n\x13recipient_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a{\n\x15PersonalEncryptedNote\x12!\n\x19root_encryption_key_index\x18\x01 \x01(\r\x12\'\n\x1f\x64\x65rivation_encryption_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a\xe9\x01\n\x14\x45mergencyActionEvent\x12\x81\x01\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32l.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEvent.ActionType\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\"#\n\nActionType\x12\t\n\x05PAUSE\x10\x00\x12\n\n\x06RESUME\x10\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x16TokenConfigUpdateEvent\x12 \n\x18token_config_update_item\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\xe6\x03\n\x1eUpdateDirectPurchasePriceEvent\x12\x15\n\x0b\x66ixed_price\x18\x01 \x01(\x04H\x00\x12\x95\x01\n\x0evariable_price\x18\x02 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PricingScheduleH\x00\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x01\x88\x01\x01\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xac\x01\n\x0fPricingSchedule\x12\x98\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PriceForQuantityB\x07\n\x05priceB\x0e\n\x0c_public_note\x1a\xfc\x02\n\x10GroupActionEvent\x12n\n\x0btoken_event\x18\x01 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenEventH\x00\x12t\n\x0e\x64ocument_event\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentEventH\x00\x12t\n\x0e\x63ontract_event\x18\x03 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractEventH\x00\x42\x0c\n\nevent_type\x1a\x8b\x01\n\rDocumentEvent\x12r\n\x06\x63reate\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentCreateEventH\x00\x42\x06\n\x04type\x1a/\n\x13\x44ocumentCreateEvent\x12\x18\n\x10\x63reated_document\x18\x01 \x01(\x0c\x1a/\n\x13\x43ontractUpdateEvent\x12\x18\n\x10updated_contract\x18\x01 \x01(\x0c\x1a\x8b\x01\n\rContractEvent\x12r\n\x06update\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractUpdateEventH\x00\x42\x06\n\x04type\x1a\xd1\x07\n\nTokenEvent\x12\x66\n\x04mint\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.MintEventH\x00\x12\x66\n\x04\x62urn\x18\x02 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.BurnEventH\x00\x12j\n\x06\x66reeze\x18\x03 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.FreezeEventH\x00\x12n\n\x08unfreeze\x18\x04 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UnfreezeEventH\x00\x12\x84\x01\n\x14\x64\x65stroy_frozen_funds\x18\x05 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DestroyFrozenFundsEventH\x00\x12}\n\x10\x65mergency_action\x18\x06 \x01(\x0b\x32\x61.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEventH\x00\x12\x82\x01\n\x13token_config_update\x18\x07 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenConfigUpdateEventH\x00\x12\x83\x01\n\x0cupdate_price\x18\x08 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEventH\x00\x42\x06\n\x04type\x1a\x93\x01\n\x10GroupActionEntry\x12\x11\n\taction_id\x18\x01 \x01(\x0c\x12l\n\x05\x65vent\x18\x02 \x01(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEvent\x1a\x84\x01\n\x0cGroupActions\x12t\n\rgroup_actions\x18\x01 \x03(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEntryB\x08\n\x06resultB\t\n\x07version\"\x88\x03\n\x1cGetGroupActionSignersRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.GetGroupActionSignersRequestV0H\x00\x1a\xce\x01\n\x1eGetGroupActionSignersRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12T\n\x06status\x18\x03 \x01(\x0e\x32\x44.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.ActionStatus\x12\x11\n\taction_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\x8b\x05\n\x1dGetGroupActionSignersResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0H\x00\x1a\xf6\x03\n\x1fGetGroupActionSignersResponseV0\x12\x8b\x01\n\x14group_action_signers\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x35\n\x11GroupActionSigner\x12\x11\n\tsigner_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x91\x01\n\x12GroupActionSigners\x12{\n\x07signers\x18\x01 \x03(\x0b\x32j.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignerB\x08\n\x06resultB\t\n\x07version*Z\n\nKeyPurpose\x12\x12\n\x0e\x41UTHENTICATION\x10\x00\x12\x0e\n\nENCRYPTION\x10\x01\x12\x0e\n\nDECRYPTION\x10\x02\x12\x0c\n\x08TRANSFER\x10\x03\x12\n\n\x06VOTING\x10\x05\x32\xf4\x36\n\x08Platform\x12\x93\x01\n\x18\x62roadcastStateTransition\x12:.org.dash.platform.dapi.v0.BroadcastStateTransitionRequest\x1a;.org.dash.platform.dapi.v0.BroadcastStateTransitionResponse\x12l\n\x0bgetIdentity\x12-.org.dash.platform.dapi.v0.GetIdentityRequest\x1a..org.dash.platform.dapi.v0.GetIdentityResponse\x12x\n\x0fgetIdentityKeys\x12\x31.org.dash.platform.dapi.v0.GetIdentityKeysRequest\x1a\x32.org.dash.platform.dapi.v0.GetIdentityKeysResponse\x12\x96\x01\n\x19getIdentitiesContractKeys\x12;.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest\x1a<.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse\x12{\n\x10getIdentityNonce\x12\x32.org.dash.platform.dapi.v0.GetIdentityNonceRequest\x1a\x33.org.dash.platform.dapi.v0.GetIdentityNonceResponse\x12\x93\x01\n\x18getIdentityContractNonce\x12:.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse\x12\x81\x01\n\x12getIdentityBalance\x12\x34.org.dash.platform.dapi.v0.GetIdentityBalanceRequest\x1a\x35.org.dash.platform.dapi.v0.GetIdentityBalanceResponse\x12\x8a\x01\n\x15getIdentitiesBalances\x12\x37.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse\x12\xa2\x01\n\x1dgetIdentityBalanceAndRevision\x12?.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest\x1a@.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse\x12\xaf\x01\n#getEvonodesProposedEpochBlocksByIds\x12\x45.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12\xb3\x01\n%getEvonodesProposedEpochBlocksByRange\x12G.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12x\n\x0fgetDataContract\x12\x31.org.dash.platform.dapi.v0.GetDataContractRequest\x1a\x32.org.dash.platform.dapi.v0.GetDataContractResponse\x12\x8d\x01\n\x16getDataContractHistory\x12\x38.org.dash.platform.dapi.v0.GetDataContractHistoryRequest\x1a\x39.org.dash.platform.dapi.v0.GetDataContractHistoryResponse\x12{\n\x10getDataContracts\x12\x32.org.dash.platform.dapi.v0.GetDataContractsRequest\x1a\x33.org.dash.platform.dapi.v0.GetDataContractsResponse\x12o\n\x0cgetDocuments\x12..org.dash.platform.dapi.v0.GetDocumentsRequest\x1a/.org.dash.platform.dapi.v0.GetDocumentsResponse\x12\x99\x01\n\x1agetIdentityByPublicKeyHash\x12<.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest\x1a=.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse\x12\xb4\x01\n#getIdentityByNonUniquePublicKeyHash\x12\x45.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest\x1a\x46.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse\x12\x9f\x01\n\x1cwaitForStateTransitionResult\x12>.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest\x1a?.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse\x12\x81\x01\n\x12getConsensusParams\x12\x34.org.dash.platform.dapi.v0.GetConsensusParamsRequest\x1a\x35.org.dash.platform.dapi.v0.GetConsensusParamsResponse\x12\xa5\x01\n\x1egetProtocolVersionUpgradeState\x12@.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest\x1a\x41.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse\x12\xb4\x01\n#getProtocolVersionUpgradeVoteStatus\x12\x45.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest\x1a\x46.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse\x12r\n\rgetEpochsInfo\x12/.org.dash.platform.dapi.v0.GetEpochsInfoRequest\x1a\x30.org.dash.platform.dapi.v0.GetEpochsInfoResponse\x12\x8d\x01\n\x16getFinalizedEpochInfos\x12\x38.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest\x1a\x39.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse\x12\x8a\x01\n\x15getContestedResources\x12\x37.org.dash.platform.dapi.v0.GetContestedResourcesRequest\x1a\x38.org.dash.platform.dapi.v0.GetContestedResourcesResponse\x12\xa2\x01\n\x1dgetContestedResourceVoteState\x12?.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest\x1a@.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse\x12\xba\x01\n%getContestedResourceVotersForIdentity\x12G.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest\x1aH.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse\x12\xae\x01\n!getContestedResourceIdentityVotes\x12\x43.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest\x1a\x44.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse\x12\x8a\x01\n\x15getVotePollsByEndDate\x12\x37.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest\x1a\x38.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse\x12\xa5\x01\n\x1egetPrefundedSpecializedBalance\x12@.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest\x1a\x41.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse\x12\x96\x01\n\x19getTotalCreditsInPlatform\x12;.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest\x1a<.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse\x12x\n\x0fgetPathElements\x12\x31.org.dash.platform.dapi.v0.GetPathElementsRequest\x1a\x32.org.dash.platform.dapi.v0.GetPathElementsResponse\x12\x66\n\tgetStatus\x12+.org.dash.platform.dapi.v0.GetStatusRequest\x1a,.org.dash.platform.dapi.v0.GetStatusResponse\x12\x8a\x01\n\x15getCurrentQuorumsInfo\x12\x37.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest\x1a\x38.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse\x12\x93\x01\n\x18getIdentityTokenBalances\x12:.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse\x12\x99\x01\n\x1agetIdentitiesTokenBalances\x12<.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest\x1a=.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse\x12\x8a\x01\n\x15getIdentityTokenInfos\x12\x37.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse\x12\x90\x01\n\x17getIdentitiesTokenInfos\x12\x39.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest\x1a:.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse\x12{\n\x10getTokenStatuses\x12\x32.org.dash.platform.dapi.v0.GetTokenStatusesRequest\x1a\x33.org.dash.platform.dapi.v0.GetTokenStatusesResponse\x12\x9f\x01\n\x1cgetTokenDirectPurchasePrices\x12>.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest\x1a?.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse\x12\x87\x01\n\x14getTokenContractInfo\x12\x36.org.dash.platform.dapi.v0.GetTokenContractInfoRequest\x1a\x37.org.dash.platform.dapi.v0.GetTokenContractInfoResponse\x12\xb1\x01\n\"getTokenPreProgrammedDistributions\x12\x44.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest\x1a\x45.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse\x12\xbd\x01\n&getTokenPerpetualDistributionLastClaim\x12H.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest\x1aI.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse\x12\x84\x01\n\x13getTokenTotalSupply\x12\x35.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest\x1a\x36.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse\x12o\n\x0cgetGroupInfo\x12..org.dash.platform.dapi.v0.GetGroupInfoRequest\x1a/.org.dash.platform.dapi.v0.GetGroupInfoResponse\x12r\n\rgetGroupInfos\x12/.org.dash.platform.dapi.v0.GetGroupInfosRequest\x1a\x30.org.dash.platform.dapi.v0.GetGroupInfosResponse\x12x\n\x0fgetGroupActions\x12\x31.org.dash.platform.dapi.v0.GetGroupActionsRequest\x1a\x32.org.dash.platform.dapi.v0.GetGroupActionsResponse\x12\x8a\x01\n\x15getGroupActionSigners\x12\x37.org.dash.platform.dapi.v0.GetGroupActionSignersRequest\x1a\x38.org.dash.platform.dapi.v0.GetGroupActionSignersResponse\x12\x8c\x01\n\x17SubscribePlatformEvents\x12\x36.org.dash.platform.dapi.v0.PlatformSubscriptionRequest\x1a\x37.org.dash.platform.dapi.v0.PlatformSubscriptionResponse0\x01\x62\x06proto3' , dependencies=[google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) @@ -62,8 +62,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=50956, - serialized_end=51046, + serialized_start=52219, + serialized_end=52309, ) _sym_db.RegisterEnumDescriptor(_KEYPURPOSE) @@ -95,8 +95,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=4178, - serialized_end=4261, + serialized_start=5441, + serialized_end=5524, ) _sym_db.RegisterEnumDescriptor(_SECURITYLEVELMAP_KEYKINDREQUESTTYPE) @@ -125,8 +125,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=22619, - serialized_end=22692, + serialized_start=23882, + serialized_end=23955, ) _sym_db.RegisterEnumDescriptor(_GETCONTESTEDRESOURCEVOTESTATEREQUEST_GETCONTESTEDRESOURCEVOTESTATEREQUESTV0_RESULTTYPE) @@ -155,8 +155,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=23614, - serialized_end=23693, + serialized_start=24877, + serialized_end=24956, ) _sym_db.RegisterEnumDescriptor(_GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0_FINISHEDVOTEINFO_FINISHEDVOTEOUTCOME) @@ -185,8 +185,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=27322, - serialized_end=27383, + serialized_start=28585, + serialized_end=28646, ) _sym_db.RegisterEnumDescriptor(_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0_RESOURCEVOTECHOICE_VOTECHOICETYPE) @@ -210,8 +210,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=45927, - serialized_end=45965, + serialized_start=47190, + serialized_end=47228, ) _sym_db.RegisterEnumDescriptor(_GETGROUPACTIONSREQUEST_ACTIONSTATUS) @@ -235,8 +235,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=47212, - serialized_end=47247, + serialized_start=48475, + serialized_end=48510, ) _sym_db.RegisterEnumDescriptor(_GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_EMERGENCYACTIONEVENT_ACTIONTYPE) @@ -260,12 +260,408 @@ ], containing_type=None, serialized_options=None, - serialized_start=45927, - serialized_end=45965, + serialized_start=47190, + serialized_end=47228, ) _sym_db.RegisterEnumDescriptor(_GETGROUPACTIONSIGNERSREQUEST_ACTIONSTATUS) +_PLATFORMSUBSCRIPTIONREQUEST_PLATFORMSUBSCRIPTIONREQUESTV0 = _descriptor.Descriptor( + name='PlatformSubscriptionRequestV0', + full_name='org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='filter', full_name='org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.filter', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=272, + serialized_end=364, +) + +_PLATFORMSUBSCRIPTIONREQUEST = _descriptor.Descriptor( + name='PlatformSubscriptionRequest', + full_name='org.dash.platform.dapi.v0.PlatformSubscriptionRequest', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='v0', full_name='org.dash.platform.dapi.v0.PlatformSubscriptionRequest.v0', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_PLATFORMSUBSCRIPTIONREQUEST_PLATFORMSUBSCRIPTIONREQUESTV0, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='version', full_name='org.dash.platform.dapi.v0.PlatformSubscriptionRequest.version', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=141, + serialized_end=375, +) + + +_PLATFORMSUBSCRIPTIONRESPONSE_PLATFORMSUBSCRIPTIONRESPONSEV0 = _descriptor.Descriptor( + name='PlatformSubscriptionResponseV0', + full_name='org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='client_subscription_id', full_name='org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.client_subscription_id', index=0, + number=1, type=9, cpp_type=9, label=1, + has_default_value=False, default_value=b"".decode('utf-8'), + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='event', full_name='org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.event', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=512, + serialized_end=635, +) + +_PLATFORMSUBSCRIPTIONRESPONSE = _descriptor.Descriptor( + name='PlatformSubscriptionResponse', + full_name='org.dash.platform.dapi.v0.PlatformSubscriptionResponse', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='v0', full_name='org.dash.platform.dapi.v0.PlatformSubscriptionResponse.v0', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_PLATFORMSUBSCRIPTIONRESPONSE_PLATFORMSUBSCRIPTIONRESPONSEV0, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='version', full_name='org.dash.platform.dapi.v0.PlatformSubscriptionResponse.version', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=378, + serialized_end=646, +) + + +_STATETRANSITIONRESULTFILTER = _descriptor.Descriptor( + name='StateTransitionResultFilter', + full_name='org.dash.platform.dapi.v0.StateTransitionResultFilter', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='tx_hash', full_name='org.dash.platform.dapi.v0.StateTransitionResultFilter.tx_hash', index=0, + number=1, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='_tx_hash', full_name='org.dash.platform.dapi.v0.StateTransitionResultFilter._tx_hash', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=648, + serialized_end=711, +) + + +_PLATFORMFILTERV0 = _descriptor.Descriptor( + name='PlatformFilterV0', + full_name='org.dash.platform.dapi.v0.PlatformFilterV0', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='all', full_name='org.dash.platform.dapi.v0.PlatformFilterV0.all', index=0, + number=1, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='block_committed', full_name='org.dash.platform.dapi.v0.PlatformFilterV0.block_committed', index=1, + number=2, type=8, cpp_type=7, label=1, + has_default_value=False, default_value=False, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='state_transition_result', full_name='org.dash.platform.dapi.v0.PlatformFilterV0.state_transition_result', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='kind', full_name='org.dash.platform.dapi.v0.PlatformFilterV0.kind', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=714, + serialized_end=873, +) + + +_PLATFORMEVENTV0_BLOCKMETADATA = _descriptor.Descriptor( + name='BlockMetadata', + full_name='org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='height', full_name='org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.height', index=0, + number=1, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=b'0\001', file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='time_ms', full_name='org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.time_ms', index=1, + number=2, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=b'0\001', file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='block_id_hash', full_name='org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.block_id_hash', index=2, + number=3, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1088, + serialized_end=1167, +) + +_PLATFORMEVENTV0_BLOCKCOMMITTED = _descriptor.Descriptor( + name='BlockCommitted', + full_name='org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='meta', full_name='org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.meta', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='tx_count', full_name='org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.tx_count', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1169, + serialized_end=1275, +) + +_PLATFORMEVENTV0_STATETRANSITIONFINALIZED = _descriptor.Descriptor( + name='StateTransitionFinalized', + full_name='org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='meta', full_name='org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.meta', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='tx_hash', full_name='org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.tx_hash', index=1, + number=2, type=12, cpp_type=9, label=1, + has_default_value=False, default_value=b"", + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1277, + serialized_end=1392, +) + +_PLATFORMEVENTV0 = _descriptor.Descriptor( + name='PlatformEventV0', + full_name='org.dash.platform.dapi.v0.PlatformEventV0', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + _descriptor.FieldDescriptor( + name='block_committed', full_name='org.dash.platform.dapi.v0.PlatformEventV0.block_committed', index=0, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='state_transition_finalized', full_name='org.dash.platform.dapi.v0.PlatformEventV0.state_transition_finalized', index=1, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + ], + extensions=[ + ], + nested_types=[_PLATFORMEVENTV0_BLOCKMETADATA, _PLATFORMEVENTV0_BLOCKCOMMITTED, _PLATFORMEVENTV0_STATETRANSITIONFINALIZED, ], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + _descriptor.OneofDescriptor( + name='event', full_name='org.dash.platform.dapi.v0.PlatformEventV0.event', + index=0, containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[]), + ], + serialized_start=876, + serialized_end=1401, +) + + _PROOF = _descriptor.Descriptor( name='Proof', full_name='org.dash.platform.dapi.v0.Proof', @@ -328,8 +724,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=141, - serialized_end=270, + serialized_start=1404, + serialized_end=1533, ) @@ -395,8 +791,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=273, - serialized_end=425, + serialized_start=1536, + serialized_end=1688, ) @@ -441,8 +837,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=427, - serialized_end=503, + serialized_start=1690, + serialized_end=1766, ) @@ -473,8 +869,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=505, - serialized_end=564, + serialized_start=1768, + serialized_end=1827, ) @@ -498,8 +894,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=566, - serialized_end=600, + serialized_start=1829, + serialized_end=1863, ) @@ -537,8 +933,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=707, - serialized_end=756, + serialized_start=1970, + serialized_end=2019, ) _GETIDENTITYREQUEST = _descriptor.Descriptor( @@ -573,8 +969,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=603, - serialized_end=767, + serialized_start=1866, + serialized_end=2030, ) @@ -612,8 +1008,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=889, - serialized_end=952, + serialized_start=2152, + serialized_end=2215, ) _GETIDENTITYNONCEREQUEST = _descriptor.Descriptor( @@ -648,8 +1044,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=770, - serialized_end=963, + serialized_start=2033, + serialized_end=2226, ) @@ -694,8 +1090,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1109, - serialized_end=1201, + serialized_start=2372, + serialized_end=2464, ) _GETIDENTITYCONTRACTNONCEREQUEST = _descriptor.Descriptor( @@ -730,8 +1126,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=966, - serialized_end=1212, + serialized_start=2229, + serialized_end=2475, ) @@ -769,8 +1165,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1340, - serialized_end=1396, + serialized_start=2603, + serialized_end=2659, ) _GETIDENTITYBALANCEREQUEST = _descriptor.Descriptor( @@ -805,8 +1201,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1215, - serialized_end=1407, + serialized_start=2478, + serialized_end=2670, ) @@ -844,8 +1240,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1568, - serialized_end=1635, + serialized_start=2831, + serialized_end=2898, ) _GETIDENTITYBALANCEANDREVISIONREQUEST = _descriptor.Descriptor( @@ -880,8 +1276,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1410, - serialized_end=1646, + serialized_start=2673, + serialized_end=2909, ) @@ -931,8 +1327,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1757, - serialized_end=1924, + serialized_start=3020, + serialized_end=3187, ) _GETIDENTITYRESPONSE = _descriptor.Descriptor( @@ -967,8 +1363,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1649, - serialized_end=1935, + serialized_start=2912, + serialized_end=3198, ) @@ -1018,8 +1414,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2061, - serialized_end=2243, + serialized_start=3324, + serialized_end=3506, ) _GETIDENTITYNONCERESPONSE = _descriptor.Descriptor( @@ -1054,8 +1450,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1938, - serialized_end=2254, + serialized_start=3201, + serialized_end=3517, ) @@ -1105,8 +1501,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2404, - serialized_end=2603, + serialized_start=3667, + serialized_end=3866, ) _GETIDENTITYCONTRACTNONCERESPONSE = _descriptor.Descriptor( @@ -1141,8 +1537,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2257, - serialized_end=2614, + serialized_start=3520, + serialized_end=3877, ) @@ -1192,8 +1588,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2746, - serialized_end=2923, + serialized_start=4009, + serialized_end=4186, ) _GETIDENTITYBALANCERESPONSE = _descriptor.Descriptor( @@ -1228,8 +1624,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2617, - serialized_end=2934, + serialized_start=3880, + serialized_end=4197, ) @@ -1267,8 +1663,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3414, - serialized_end=3477, + serialized_start=4677, + serialized_end=4740, ) _GETIDENTITYBALANCEANDREVISIONRESPONSE_GETIDENTITYBALANCEANDREVISIONRESPONSEV0 = _descriptor.Descriptor( @@ -1317,8 +1713,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3099, - serialized_end=3487, + serialized_start=4362, + serialized_end=4750, ) _GETIDENTITYBALANCEANDREVISIONRESPONSE = _descriptor.Descriptor( @@ -1353,8 +1749,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2937, - serialized_end=3498, + serialized_start=4200, + serialized_end=4761, ) @@ -1404,8 +1800,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3501, - serialized_end=3710, + serialized_start=4764, + serialized_end=4973, ) @@ -1429,8 +1825,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3712, - serialized_end=3721, + serialized_start=4975, + serialized_end=4984, ) @@ -1461,8 +1857,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3723, - serialized_end=3754, + serialized_start=4986, + serialized_end=5017, ) @@ -1500,8 +1896,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3845, - serialized_end=3939, + serialized_start=5108, + serialized_end=5202, ) _SEARCHKEY = _descriptor.Descriptor( @@ -1531,8 +1927,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3757, - serialized_end=3939, + serialized_start=5020, + serialized_end=5202, ) @@ -1570,8 +1966,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4057, - serialized_end=4176, + serialized_start=5320, + serialized_end=5439, ) _SECURITYLEVELMAP = _descriptor.Descriptor( @@ -1602,8 +1998,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3942, - serialized_end=4261, + serialized_start=5205, + serialized_end=5524, ) @@ -1662,8 +2058,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4381, - serialized_end=4599, + serialized_start=5644, + serialized_end=5862, ) _GETIDENTITYKEYSREQUEST = _descriptor.Descriptor( @@ -1698,8 +2094,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4264, - serialized_end=4610, + serialized_start=5527, + serialized_end=5873, ) @@ -1730,8 +2126,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4975, - serialized_end=5001, + serialized_start=6238, + serialized_end=6264, ) _GETIDENTITYKEYSRESPONSE_GETIDENTITYKEYSRESPONSEV0 = _descriptor.Descriptor( @@ -1780,8 +2176,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4733, - serialized_end=5011, + serialized_start=5996, + serialized_end=6274, ) _GETIDENTITYKEYSRESPONSE = _descriptor.Descriptor( @@ -1816,8 +2212,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4613, - serialized_end=5022, + serialized_start=5876, + serialized_end=6285, ) @@ -1881,8 +2277,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=5172, - serialized_end=5381, + serialized_start=6435, + serialized_end=6644, ) _GETIDENTITIESCONTRACTKEYSREQUEST = _descriptor.Descriptor( @@ -1917,8 +2313,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=5025, - serialized_end=5392, + serialized_start=6288, + serialized_end=6655, ) @@ -1956,8 +2352,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5839, - serialized_end=5928, + serialized_start=7102, + serialized_end=7191, ) _GETIDENTITIESCONTRACTKEYSRESPONSE_GETIDENTITIESCONTRACTKEYSRESPONSEV0_IDENTITYKEYS = _descriptor.Descriptor( @@ -1994,8 +2390,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5931, - serialized_end=6090, + serialized_start=7194, + serialized_end=7353, ) _GETIDENTITIESCONTRACTKEYSRESPONSE_GETIDENTITIESCONTRACTKEYSRESPONSEV0_IDENTITIESKEYS = _descriptor.Descriptor( @@ -2025,8 +2421,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6093, - serialized_end=6237, + serialized_start=7356, + serialized_end=7500, ) _GETIDENTITIESCONTRACTKEYSRESPONSE_GETIDENTITIESCONTRACTKEYSRESPONSEV0 = _descriptor.Descriptor( @@ -2075,8 +2471,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=5545, - serialized_end=6247, + serialized_start=6808, + serialized_end=7510, ) _GETIDENTITIESCONTRACTKEYSRESPONSE = _descriptor.Descriptor( @@ -2111,8 +2507,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=5395, - serialized_end=6258, + serialized_start=6658, + serialized_end=7521, ) @@ -2162,8 +2558,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6438, - serialized_end=6542, + serialized_start=7701, + serialized_end=7805, ) _GETEVONODESPROPOSEDEPOCHBLOCKSBYIDSREQUEST = _descriptor.Descriptor( @@ -2198,8 +2594,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6261, - serialized_end=6553, + serialized_start=7524, + serialized_end=7816, ) @@ -2237,8 +2633,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7059, - serialized_end=7122, + serialized_start=8322, + serialized_end=8385, ) _GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSE_GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSEV0_EVONODESPROPOSEDBLOCKS = _descriptor.Descriptor( @@ -2268,8 +2664,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7125, - serialized_end=7321, + serialized_start=8388, + serialized_end=8584, ) _GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSE_GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSEV0 = _descriptor.Descriptor( @@ -2318,8 +2714,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6721, - serialized_end=7331, + serialized_start=7984, + serialized_end=8594, ) _GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSE = _descriptor.Descriptor( @@ -2354,8 +2750,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6556, - serialized_end=7342, + serialized_start=7819, + serialized_end=8605, ) @@ -2429,8 +2825,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7529, - serialized_end=7704, + serialized_start=8792, + serialized_end=8967, ) _GETEVONODESPROPOSEDEPOCHBLOCKSBYRANGEREQUEST = _descriptor.Descriptor( @@ -2465,8 +2861,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7345, - serialized_end=7715, + serialized_start=8608, + serialized_end=8978, ) @@ -2504,8 +2900,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7852, - serialized_end=7912, + serialized_start=9115, + serialized_end=9175, ) _GETIDENTITIESBALANCESREQUEST = _descriptor.Descriptor( @@ -2540,8 +2936,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7718, - serialized_end=7923, + serialized_start=8981, + serialized_end=9186, ) @@ -2584,8 +2980,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8354, - serialized_end=8430, + serialized_start=9617, + serialized_end=9693, ) _GETIDENTITIESBALANCESRESPONSE_GETIDENTITIESBALANCESRESPONSEV0_IDENTITIESBALANCES = _descriptor.Descriptor( @@ -2615,8 +3011,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8433, - serialized_end=8576, + serialized_start=9696, + serialized_end=9839, ) _GETIDENTITIESBALANCESRESPONSE_GETIDENTITIESBALANCESRESPONSEV0 = _descriptor.Descriptor( @@ -2665,8 +3061,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8064, - serialized_end=8586, + serialized_start=9327, + serialized_end=9849, ) _GETIDENTITIESBALANCESRESPONSE = _descriptor.Descriptor( @@ -2701,8 +3097,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7926, - serialized_end=8597, + serialized_start=9189, + serialized_end=9860, ) @@ -2740,8 +3136,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8716, - serialized_end=8769, + serialized_start=9979, + serialized_end=10032, ) _GETDATACONTRACTREQUEST = _descriptor.Descriptor( @@ -2776,8 +3172,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8600, - serialized_end=8780, + serialized_start=9863, + serialized_end=10043, ) @@ -2827,8 +3223,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8903, - serialized_end=9079, + serialized_start=10166, + serialized_end=10342, ) _GETDATACONTRACTRESPONSE = _descriptor.Descriptor( @@ -2863,8 +3259,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8783, - serialized_end=9090, + serialized_start=10046, + serialized_end=10353, ) @@ -2902,8 +3298,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9212, - serialized_end=9267, + serialized_start=10475, + serialized_end=10530, ) _GETDATACONTRACTSREQUEST = _descriptor.Descriptor( @@ -2938,8 +3334,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9093, - serialized_end=9278, + serialized_start=10356, + serialized_end=10541, ) @@ -2977,8 +3373,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9403, - serialized_end=9494, + serialized_start=10666, + serialized_end=10757, ) _GETDATACONTRACTSRESPONSE_DATACONTRACTS = _descriptor.Descriptor( @@ -3008,8 +3404,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9496, - serialized_end=9613, + serialized_start=10759, + serialized_end=10876, ) _GETDATACONTRACTSRESPONSE_GETDATACONTRACTSRESPONSEV0 = _descriptor.Descriptor( @@ -3058,8 +3454,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9616, - serialized_end=9861, + serialized_start=10879, + serialized_end=11124, ) _GETDATACONTRACTSRESPONSE = _descriptor.Descriptor( @@ -3094,8 +3490,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9281, - serialized_end=9872, + serialized_start=10544, + serialized_end=11135, ) @@ -3154,8 +3550,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10013, - serialized_end=10189, + serialized_start=11276, + serialized_end=11452, ) _GETDATACONTRACTHISTORYREQUEST = _descriptor.Descriptor( @@ -3190,8 +3586,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9875, - serialized_end=10200, + serialized_start=11138, + serialized_end=11463, ) @@ -3229,8 +3625,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10640, - serialized_end=10699, + serialized_start=11903, + serialized_end=11962, ) _GETDATACONTRACTHISTORYRESPONSE_GETDATACONTRACTHISTORYRESPONSEV0_DATACONTRACTHISTORY = _descriptor.Descriptor( @@ -3260,8 +3656,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10702, - serialized_end=10872, + serialized_start=11965, + serialized_end=12135, ) _GETDATACONTRACTHISTORYRESPONSE_GETDATACONTRACTHISTORYRESPONSEV0 = _descriptor.Descriptor( @@ -3310,8 +3706,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10344, - serialized_end=10882, + serialized_start=11607, + serialized_end=12145, ) _GETDATACONTRACTHISTORYRESPONSE = _descriptor.Descriptor( @@ -3346,8 +3742,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10203, - serialized_end=10893, + serialized_start=11466, + serialized_end=12156, ) @@ -3432,8 +3828,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11004, - serialized_end=11191, + serialized_start=12267, + serialized_end=12454, ) _GETDOCUMENTSREQUEST = _descriptor.Descriptor( @@ -3468,8 +3864,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10896, - serialized_end=11202, + serialized_start=12159, + serialized_end=12465, ) @@ -3500,8 +3896,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11559, - serialized_end=11589, + serialized_start=12822, + serialized_end=12852, ) _GETDOCUMENTSRESPONSE_GETDOCUMENTSRESPONSEV0 = _descriptor.Descriptor( @@ -3550,8 +3946,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11316, - serialized_end=11599, + serialized_start=12579, + serialized_end=12862, ) _GETDOCUMENTSRESPONSE = _descriptor.Descriptor( @@ -3586,8 +3982,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11205, - serialized_end=11610, + serialized_start=12468, + serialized_end=12873, ) @@ -3625,8 +4021,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11762, - serialized_end=11839, + serialized_start=13025, + serialized_end=13102, ) _GETIDENTITYBYPUBLICKEYHASHREQUEST = _descriptor.Descriptor( @@ -3661,8 +4057,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11613, - serialized_end=11850, + serialized_start=12876, + serialized_end=13113, ) @@ -3712,8 +4108,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12006, - serialized_end=12188, + serialized_start=13269, + serialized_end=13451, ) _GETIDENTITYBYPUBLICKEYHASHRESPONSE = _descriptor.Descriptor( @@ -3748,8 +4144,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11853, - serialized_end=12199, + serialized_start=13116, + serialized_end=13462, ) @@ -3799,8 +4195,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12380, - serialized_end=12508, + serialized_start=13643, + serialized_end=13771, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHREQUEST = _descriptor.Descriptor( @@ -3835,8 +4231,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12202, - serialized_end=12519, + serialized_start=13465, + serialized_end=13782, ) @@ -3872,8 +4268,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13132, - serialized_end=13186, + serialized_start=14395, + serialized_end=14449, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSE_GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSEV0_IDENTITYPROVEDRESPONSE = _descriptor.Descriptor( @@ -3915,8 +4311,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13189, - serialized_end=13355, + serialized_start=14452, + serialized_end=14618, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSE_GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSEV0 = _descriptor.Descriptor( @@ -3965,8 +4361,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12703, - serialized_end=13365, + serialized_start=13966, + serialized_end=14628, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSE = _descriptor.Descriptor( @@ -4001,8 +4397,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12522, - serialized_end=13376, + serialized_start=13785, + serialized_end=14639, ) @@ -4040,8 +4436,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13534, - serialized_end=13619, + serialized_start=14797, + serialized_end=14882, ) _WAITFORSTATETRANSITIONRESULTREQUEST = _descriptor.Descriptor( @@ -4076,8 +4472,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13379, - serialized_end=13630, + serialized_start=14642, + serialized_end=14893, ) @@ -4127,8 +4523,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13792, - serialized_end=14031, + serialized_start=15055, + serialized_end=15294, ) _WAITFORSTATETRANSITIONRESULTRESPONSE = _descriptor.Descriptor( @@ -4163,8 +4559,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13633, - serialized_end=14042, + serialized_start=14896, + serialized_end=15305, ) @@ -4202,8 +4598,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14170, - serialized_end=14230, + serialized_start=15433, + serialized_end=15493, ) _GETCONSENSUSPARAMSREQUEST = _descriptor.Descriptor( @@ -4238,8 +4634,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14045, - serialized_end=14241, + serialized_start=15308, + serialized_end=15504, ) @@ -4284,8 +4680,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14372, - serialized_end=14452, + serialized_start=15635, + serialized_end=15715, ) _GETCONSENSUSPARAMSRESPONSE_CONSENSUSPARAMSEVIDENCE = _descriptor.Descriptor( @@ -4329,8 +4725,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14454, - serialized_end=14552, + serialized_start=15717, + serialized_end=15815, ) _GETCONSENSUSPARAMSRESPONSE_GETCONSENSUSPARAMSRESPONSEV0 = _descriptor.Descriptor( @@ -4367,8 +4763,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14555, - serialized_end=14773, + serialized_start=15818, + serialized_end=16036, ) _GETCONSENSUSPARAMSRESPONSE = _descriptor.Descriptor( @@ -4403,8 +4799,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14244, - serialized_end=14784, + serialized_start=15507, + serialized_end=16047, ) @@ -4435,8 +4831,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14948, - serialized_end=15004, + serialized_start=16211, + serialized_end=16267, ) _GETPROTOCOLVERSIONUPGRADESTATEREQUEST = _descriptor.Descriptor( @@ -4471,8 +4867,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14787, - serialized_end=15015, + serialized_start=16050, + serialized_end=16278, ) @@ -4503,8 +4899,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15480, - serialized_end=15630, + serialized_start=16743, + serialized_end=16893, ) _GETPROTOCOLVERSIONUPGRADESTATERESPONSE_GETPROTOCOLVERSIONUPGRADESTATERESPONSEV0_VERSIONENTRY = _descriptor.Descriptor( @@ -4541,8 +4937,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15632, - serialized_end=15690, + serialized_start=16895, + serialized_end=16953, ) _GETPROTOCOLVERSIONUPGRADESTATERESPONSE_GETPROTOCOLVERSIONUPGRADESTATERESPONSEV0 = _descriptor.Descriptor( @@ -4591,8 +4987,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15183, - serialized_end=15700, + serialized_start=16446, + serialized_end=16963, ) _GETPROTOCOLVERSIONUPGRADESTATERESPONSE = _descriptor.Descriptor( @@ -4627,8 +5023,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15018, - serialized_end=15711, + serialized_start=16281, + serialized_end=16974, ) @@ -4673,8 +5069,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15891, - serialized_end=15994, + serialized_start=17154, + serialized_end=17257, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSREQUEST = _descriptor.Descriptor( @@ -4709,8 +5105,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15714, - serialized_end=16005, + serialized_start=16977, + serialized_end=17268, ) @@ -4741,8 +5137,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16508, - serialized_end=16683, + serialized_start=17771, + serialized_end=17946, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSE_GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSEV0_VERSIONSIGNAL = _descriptor.Descriptor( @@ -4779,8 +5175,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16685, - serialized_end=16738, + serialized_start=17948, + serialized_end=18001, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSE_GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSEV0 = _descriptor.Descriptor( @@ -4829,8 +5225,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16189, - serialized_end=16748, + serialized_start=17452, + serialized_end=18011, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSE = _descriptor.Descriptor( @@ -4865,8 +5261,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16008, - serialized_end=16759, + serialized_start=17271, + serialized_end=18022, ) @@ -4918,8 +5314,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16872, - serialized_end=16996, + serialized_start=18135, + serialized_end=18259, ) _GETEPOCHSINFOREQUEST = _descriptor.Descriptor( @@ -4954,8 +5350,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16762, - serialized_end=17007, + serialized_start=18025, + serialized_end=18270, ) @@ -4986,8 +5382,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17368, - serialized_end=17485, + serialized_start=18631, + serialized_end=18748, ) _GETEPOCHSINFORESPONSE_GETEPOCHSINFORESPONSEV0_EPOCHINFO = _descriptor.Descriptor( @@ -5052,8 +5448,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17488, - serialized_end=17654, + serialized_start=18751, + serialized_end=18917, ) _GETEPOCHSINFORESPONSE_GETEPOCHSINFORESPONSEV0 = _descriptor.Descriptor( @@ -5102,8 +5498,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=17124, - serialized_end=17664, + serialized_start=18387, + serialized_end=18927, ) _GETEPOCHSINFORESPONSE = _descriptor.Descriptor( @@ -5138,8 +5534,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=17010, - serialized_end=17675, + serialized_start=18273, + serialized_end=18938, ) @@ -5198,8 +5594,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17816, - serialized_end=17986, + serialized_start=19079, + serialized_end=19249, ) _GETFINALIZEDEPOCHINFOSREQUEST = _descriptor.Descriptor( @@ -5234,8 +5630,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=17678, - serialized_end=17997, + serialized_start=18941, + serialized_end=19260, ) @@ -5266,8 +5662,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18423, - serialized_end=18587, + serialized_start=19686, + serialized_end=19850, ) _GETFINALIZEDEPOCHINFOSRESPONSE_GETFINALIZEDEPOCHINFOSRESPONSEV0_FINALIZEDEPOCHINFO = _descriptor.Descriptor( @@ -5381,8 +5777,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18590, - serialized_end=19133, + serialized_start=19853, + serialized_end=20396, ) _GETFINALIZEDEPOCHINFOSRESPONSE_GETFINALIZEDEPOCHINFOSRESPONSEV0_BLOCKPROPOSER = _descriptor.Descriptor( @@ -5419,8 +5815,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19135, - serialized_end=19192, + serialized_start=20398, + serialized_end=20455, ) _GETFINALIZEDEPOCHINFOSRESPONSE_GETFINALIZEDEPOCHINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -5469,8 +5865,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18141, - serialized_end=19202, + serialized_start=19404, + serialized_end=20465, ) _GETFINALIZEDEPOCHINFOSRESPONSE = _descriptor.Descriptor( @@ -5505,8 +5901,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18000, - serialized_end=19213, + serialized_start=19263, + serialized_end=20476, ) @@ -5544,8 +5940,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19708, - serialized_end=19777, + serialized_start=20971, + serialized_end=21040, ) _GETCONTESTEDRESOURCESREQUEST_GETCONTESTEDRESOURCESREQUESTV0 = _descriptor.Descriptor( @@ -5641,8 +6037,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19351, - serialized_end=19811, + serialized_start=20614, + serialized_end=21074, ) _GETCONTESTEDRESOURCESREQUEST = _descriptor.Descriptor( @@ -5677,8 +6073,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19216, - serialized_end=19822, + serialized_start=20479, + serialized_end=21085, ) @@ -5709,8 +6105,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20264, - serialized_end=20324, + serialized_start=21527, + serialized_end=21587, ) _GETCONTESTEDRESOURCESRESPONSE_GETCONTESTEDRESOURCESRESPONSEV0 = _descriptor.Descriptor( @@ -5759,8 +6155,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19963, - serialized_end=20334, + serialized_start=21226, + serialized_end=21597, ) _GETCONTESTEDRESOURCESRESPONSE = _descriptor.Descriptor( @@ -5795,8 +6191,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19825, - serialized_end=20345, + serialized_start=21088, + serialized_end=21608, ) @@ -5834,8 +6230,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20858, - serialized_end=20931, + serialized_start=22121, + serialized_end=22194, ) _GETVOTEPOLLSBYENDDATEREQUEST_GETVOTEPOLLSBYENDDATEREQUESTV0_ENDATTIMEINFO = _descriptor.Descriptor( @@ -5872,8 +6268,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20933, - serialized_end=21000, + serialized_start=22196, + serialized_end=22263, ) _GETVOTEPOLLSBYENDDATEREQUEST_GETVOTEPOLLSBYENDDATEREQUESTV0 = _descriptor.Descriptor( @@ -5958,8 +6354,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=20483, - serialized_end=21059, + serialized_start=21746, + serialized_end=22322, ) _GETVOTEPOLLSBYENDDATEREQUEST = _descriptor.Descriptor( @@ -5994,8 +6390,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=20348, - serialized_end=21070, + serialized_start=21611, + serialized_end=22333, ) @@ -6033,8 +6429,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=21519, - serialized_end=21605, + serialized_start=22782, + serialized_end=22868, ) _GETVOTEPOLLSBYENDDATERESPONSE_GETVOTEPOLLSBYENDDATERESPONSEV0_SERIALIZEDVOTEPOLLSBYTIMESTAMPS = _descriptor.Descriptor( @@ -6071,8 +6467,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=21608, - serialized_end=21823, + serialized_start=22871, + serialized_end=23086, ) _GETVOTEPOLLSBYENDDATERESPONSE_GETVOTEPOLLSBYENDDATERESPONSEV0 = _descriptor.Descriptor( @@ -6121,8 +6517,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21211, - serialized_end=21833, + serialized_start=22474, + serialized_end=23096, ) _GETVOTEPOLLSBYENDDATERESPONSE = _descriptor.Descriptor( @@ -6157,8 +6553,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21073, - serialized_end=21844, + serialized_start=22336, + serialized_end=23107, ) @@ -6196,8 +6592,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=22533, - serialized_end=22617, + serialized_start=23796, + serialized_end=23880, ) _GETCONTESTEDRESOURCEVOTESTATEREQUEST_GETCONTESTEDRESOURCEVOTESTATEREQUESTV0 = _descriptor.Descriptor( @@ -6294,8 +6690,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=22006, - serialized_end=22731, + serialized_start=23269, + serialized_end=23994, ) _GETCONTESTEDRESOURCEVOTESTATEREQUEST = _descriptor.Descriptor( @@ -6330,8 +6726,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21847, - serialized_end=22742, + serialized_start=23110, + serialized_end=24005, ) @@ -6403,8 +6799,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=23242, - serialized_end=23716, + serialized_start=24505, + serialized_end=24979, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0_CONTESTEDRESOURCECONTENDERS = _descriptor.Descriptor( @@ -6470,8 +6866,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=23719, - serialized_end=24171, + serialized_start=24982, + serialized_end=25434, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0_CONTENDER = _descriptor.Descriptor( @@ -6525,8 +6921,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24173, - serialized_end=24280, + serialized_start=25436, + serialized_end=25543, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0 = _descriptor.Descriptor( @@ -6575,8 +6971,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=22907, - serialized_end=24290, + serialized_start=24170, + serialized_end=25553, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE = _descriptor.Descriptor( @@ -6611,8 +7007,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=22745, - serialized_end=24301, + serialized_start=24008, + serialized_end=25564, ) @@ -6650,8 +7046,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=22533, - serialized_end=22617, + serialized_start=23796, + serialized_end=23880, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYREQUEST_GETCONTESTEDRESOURCEVOTERSFORIDENTITYREQUESTV0 = _descriptor.Descriptor( @@ -6747,8 +7143,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24488, - serialized_end=25018, + serialized_start=25751, + serialized_end=26281, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYREQUEST = _descriptor.Descriptor( @@ -6783,8 +7179,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24304, - serialized_end=25029, + serialized_start=25567, + serialized_end=26292, ) @@ -6822,8 +7218,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=25569, - serialized_end=25636, + serialized_start=26832, + serialized_end=26899, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYRESPONSE_GETCONTESTEDRESOURCEVOTERSFORIDENTITYRESPONSEV0 = _descriptor.Descriptor( @@ -6872,8 +7268,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25219, - serialized_end=25646, + serialized_start=26482, + serialized_end=26909, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYRESPONSE = _descriptor.Descriptor( @@ -6908,8 +7304,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25032, - serialized_end=25657, + serialized_start=26295, + serialized_end=26920, ) @@ -6947,8 +7343,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=26206, - serialized_end=26303, + serialized_start=27469, + serialized_end=27566, ) _GETCONTESTEDRESOURCEIDENTITYVOTESREQUEST_GETCONTESTEDRESOURCEIDENTITYVOTESREQUESTV0 = _descriptor.Descriptor( @@ -7018,8 +7414,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25831, - serialized_end=26334, + serialized_start=27094, + serialized_end=27597, ) _GETCONTESTEDRESOURCEIDENTITYVOTESREQUEST = _descriptor.Descriptor( @@ -7054,8 +7450,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25660, - serialized_end=26345, + serialized_start=26923, + serialized_end=27608, ) @@ -7093,8 +7489,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=26848, - serialized_end=27095, + serialized_start=28111, + serialized_end=28358, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0_RESOURCEVOTECHOICE = _descriptor.Descriptor( @@ -7137,8 +7533,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27098, - serialized_end=27399, + serialized_start=28361, + serialized_end=28662, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0_CONTESTEDRESOURCEIDENTITYVOTE = _descriptor.Descriptor( @@ -7189,8 +7585,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=27402, - serialized_end=27679, + serialized_start=28665, + serialized_end=28942, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0 = _descriptor.Descriptor( @@ -7239,8 +7635,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=26522, - serialized_end=27689, + serialized_start=27785, + serialized_end=28952, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE = _descriptor.Descriptor( @@ -7275,8 +7671,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=26348, - serialized_end=27700, + serialized_start=27611, + serialized_end=28963, ) @@ -7314,8 +7710,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=27864, - serialized_end=27932, + serialized_start=29127, + serialized_end=29195, ) _GETPREFUNDEDSPECIALIZEDBALANCEREQUEST = _descriptor.Descriptor( @@ -7350,8 +7746,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27703, - serialized_end=27943, + serialized_start=28966, + serialized_end=29206, ) @@ -7401,8 +7797,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=28111, - serialized_end=28300, + serialized_start=29374, + serialized_end=29563, ) _GETPREFUNDEDSPECIALIZEDBALANCERESPONSE = _descriptor.Descriptor( @@ -7437,8 +7833,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27946, - serialized_end=28311, + serialized_start=29209, + serialized_end=29574, ) @@ -7469,8 +7865,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=28460, - serialized_end=28511, + serialized_start=29723, + serialized_end=29774, ) _GETTOTALCREDITSINPLATFORMREQUEST = _descriptor.Descriptor( @@ -7505,8 +7901,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=28314, - serialized_end=28522, + serialized_start=29577, + serialized_end=29785, ) @@ -7556,8 +7952,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=28675, - serialized_end=28859, + serialized_start=29938, + serialized_end=30122, ) _GETTOTALCREDITSINPLATFORMRESPONSE = _descriptor.Descriptor( @@ -7592,8 +7988,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=28525, - serialized_end=28870, + serialized_start=29788, + serialized_end=30133, ) @@ -7638,8 +8034,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=28989, - serialized_end=29058, + serialized_start=30252, + serialized_end=30321, ) _GETPATHELEMENTSREQUEST = _descriptor.Descriptor( @@ -7674,8 +8070,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=28873, - serialized_end=29069, + serialized_start=30136, + serialized_end=30332, ) @@ -7706,8 +8102,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=29442, - serialized_end=29470, + serialized_start=30705, + serialized_end=30733, ) _GETPATHELEMENTSRESPONSE_GETPATHELEMENTSRESPONSEV0 = _descriptor.Descriptor( @@ -7756,8 +8152,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29192, - serialized_end=29480, + serialized_start=30455, + serialized_end=30743, ) _GETPATHELEMENTSRESPONSE = _descriptor.Descriptor( @@ -7792,8 +8188,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29072, - serialized_end=29491, + serialized_start=30335, + serialized_end=30754, ) @@ -7817,8 +8213,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=29592, - serialized_end=29612, + serialized_start=30855, + serialized_end=30875, ) _GETSTATUSREQUEST = _descriptor.Descriptor( @@ -7853,8 +8249,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29494, - serialized_end=29623, + serialized_start=30757, + serialized_end=30886, ) @@ -7909,8 +8305,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30500, - serialized_end=30594, + serialized_start=31763, + serialized_end=31857, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION_PROTOCOL_TENDERDASH = _descriptor.Descriptor( @@ -7947,8 +8343,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30827, - serialized_end=30867, + serialized_start=32090, + serialized_end=32130, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION_PROTOCOL_DRIVE = _descriptor.Descriptor( @@ -7985,8 +8381,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30869, - serialized_end=30909, + serialized_start=32132, + serialized_end=32172, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION_PROTOCOL = _descriptor.Descriptor( @@ -8023,8 +8419,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30597, - serialized_end=30909, + serialized_start=31860, + serialized_end=32172, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION = _descriptor.Descriptor( @@ -8061,8 +8457,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30287, - serialized_end=30909, + serialized_start=31550, + serialized_end=32172, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_TIME = _descriptor.Descriptor( @@ -8128,8 +8524,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30911, - serialized_end=31038, + serialized_start=32174, + serialized_end=32301, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_NODE = _descriptor.Descriptor( @@ -8171,8 +8567,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=31040, - serialized_end=31100, + serialized_start=32303, + serialized_end=32363, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_CHAIN = _descriptor.Descriptor( @@ -8263,8 +8659,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=31103, - serialized_end=31410, + serialized_start=32366, + serialized_end=32673, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_NETWORK = _descriptor.Descriptor( @@ -8308,8 +8704,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=31412, - serialized_end=31479, + serialized_start=32675, + serialized_end=32742, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_STATESYNC = _descriptor.Descriptor( @@ -8388,8 +8784,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=31482, - serialized_end=31743, + serialized_start=32745, + serialized_end=33006, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0 = _descriptor.Descriptor( @@ -8454,8 +8850,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=29728, - serialized_end=31743, + serialized_start=30991, + serialized_end=33006, ) _GETSTATUSRESPONSE = _descriptor.Descriptor( @@ -8490,8 +8886,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29626, - serialized_end=31754, + serialized_start=30889, + serialized_end=33017, ) @@ -8515,8 +8911,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=31891, - serialized_end=31923, + serialized_start=33154, + serialized_end=33186, ) _GETCURRENTQUORUMSINFOREQUEST = _descriptor.Descriptor( @@ -8551,8 +8947,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=31757, - serialized_end=31934, + serialized_start=33020, + serialized_end=33197, ) @@ -8597,8 +8993,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32074, - serialized_end=32144, + serialized_start=33337, + serialized_end=33407, ) _GETCURRENTQUORUMSINFORESPONSE_VALIDATORSETV0 = _descriptor.Descriptor( @@ -8649,8 +9045,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32147, - serialized_end=32322, + serialized_start=33410, + serialized_end=33585, ) _GETCURRENTQUORUMSINFORESPONSE_GETCURRENTQUORUMSINFORESPONSEV0 = _descriptor.Descriptor( @@ -8708,8 +9104,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32325, - serialized_end=32599, + serialized_start=33588, + serialized_end=33862, ) _GETCURRENTQUORUMSINFORESPONSE = _descriptor.Descriptor( @@ -8744,8 +9140,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=31937, - serialized_end=32610, + serialized_start=33200, + serialized_end=33873, ) @@ -8790,8 +9186,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32756, - serialized_end=32846, + serialized_start=34019, + serialized_end=34109, ) _GETIDENTITYTOKENBALANCESREQUEST = _descriptor.Descriptor( @@ -8826,8 +9222,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=32613, - serialized_end=32857, + serialized_start=33876, + serialized_end=34120, ) @@ -8870,8 +9266,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=33296, - serialized_end=33367, + serialized_start=34559, + serialized_end=34630, ) _GETIDENTITYTOKENBALANCESRESPONSE_GETIDENTITYTOKENBALANCESRESPONSEV0_TOKENBALANCES = _descriptor.Descriptor( @@ -8901,8 +9297,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33370, - serialized_end=33524, + serialized_start=34633, + serialized_end=34787, ) _GETIDENTITYTOKENBALANCESRESPONSE_GETIDENTITYTOKENBALANCESRESPONSEV0 = _descriptor.Descriptor( @@ -8951,8 +9347,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=33007, - serialized_end=33534, + serialized_start=34270, + serialized_end=34797, ) _GETIDENTITYTOKENBALANCESRESPONSE = _descriptor.Descriptor( @@ -8987,8 +9383,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=32860, - serialized_end=33545, + serialized_start=34123, + serialized_end=34808, ) @@ -9033,8 +9429,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33697, - serialized_end=33789, + serialized_start=34960, + serialized_end=35052, ) _GETIDENTITIESTOKENBALANCESREQUEST = _descriptor.Descriptor( @@ -9069,8 +9465,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=33548, - serialized_end=33800, + serialized_start=34811, + serialized_end=35063, ) @@ -9113,8 +9509,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34268, - serialized_end=34350, + serialized_start=35531, + serialized_end=35613, ) _GETIDENTITIESTOKENBALANCESRESPONSE_GETIDENTITIESTOKENBALANCESRESPONSEV0_IDENTITYTOKENBALANCES = _descriptor.Descriptor( @@ -9144,8 +9540,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=34353, - serialized_end=34536, + serialized_start=35616, + serialized_end=35799, ) _GETIDENTITIESTOKENBALANCESRESPONSE_GETIDENTITIESTOKENBALANCESRESPONSEV0 = _descriptor.Descriptor( @@ -9194,8 +9590,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=33956, - serialized_end=34546, + serialized_start=35219, + serialized_end=35809, ) _GETIDENTITIESTOKENBALANCESRESPONSE = _descriptor.Descriptor( @@ -9230,8 +9626,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=33803, - serialized_end=34557, + serialized_start=35066, + serialized_end=35820, ) @@ -9276,8 +9672,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=34694, - serialized_end=34781, + serialized_start=35957, + serialized_end=36044, ) _GETIDENTITYTOKENINFOSREQUEST = _descriptor.Descriptor( @@ -9312,8 +9708,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34560, - serialized_end=34792, + serialized_start=35823, + serialized_end=36055, ) @@ -9344,8 +9740,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=35206, - serialized_end=35246, + serialized_start=36469, + serialized_end=36509, ) _GETIDENTITYTOKENINFOSRESPONSE_GETIDENTITYTOKENINFOSRESPONSEV0_TOKENINFOENTRY = _descriptor.Descriptor( @@ -9387,8 +9783,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35249, - serialized_end=35425, + serialized_start=36512, + serialized_end=36688, ) _GETIDENTITYTOKENINFOSRESPONSE_GETIDENTITYTOKENINFOSRESPONSEV0_TOKENINFOS = _descriptor.Descriptor( @@ -9418,8 +9814,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=35428, - serialized_end=35566, + serialized_start=36691, + serialized_end=36829, ) _GETIDENTITYTOKENINFOSRESPONSE_GETIDENTITYTOKENINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -9468,8 +9864,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34933, - serialized_end=35576, + serialized_start=36196, + serialized_end=36839, ) _GETIDENTITYTOKENINFOSRESPONSE = _descriptor.Descriptor( @@ -9504,8 +9900,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34795, - serialized_end=35587, + serialized_start=36058, + serialized_end=36850, ) @@ -9550,8 +9946,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=35730, - serialized_end=35819, + serialized_start=36993, + serialized_end=37082, ) _GETIDENTITIESTOKENINFOSREQUEST = _descriptor.Descriptor( @@ -9586,8 +9982,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35590, - serialized_end=35830, + serialized_start=36853, + serialized_end=37093, ) @@ -9618,8 +10014,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=35206, - serialized_end=35246, + serialized_start=36469, + serialized_end=36509, ) _GETIDENTITIESTOKENINFOSRESPONSE_GETIDENTITIESTOKENINFOSRESPONSEV0_TOKENINFOENTRY = _descriptor.Descriptor( @@ -9661,8 +10057,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36317, - serialized_end=36500, + serialized_start=37580, + serialized_end=37763, ) _GETIDENTITIESTOKENINFOSRESPONSE_GETIDENTITIESTOKENINFOSRESPONSEV0_IDENTITYTOKENINFOS = _descriptor.Descriptor( @@ -9692,8 +10088,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36503, - serialized_end=36654, + serialized_start=37766, + serialized_end=37917, ) _GETIDENTITIESTOKENINFOSRESPONSE_GETIDENTITIESTOKENINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -9742,8 +10138,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35977, - serialized_end=36664, + serialized_start=37240, + serialized_end=37927, ) _GETIDENTITIESTOKENINFOSRESPONSE = _descriptor.Descriptor( @@ -9778,8 +10174,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35833, - serialized_end=36675, + serialized_start=37096, + serialized_end=37938, ) @@ -9817,8 +10213,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36797, - serialized_end=36858, + serialized_start=38060, + serialized_end=38121, ) _GETTOKENSTATUSESREQUEST = _descriptor.Descriptor( @@ -9853,8 +10249,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36678, - serialized_end=36869, + serialized_start=37941, + serialized_end=38132, ) @@ -9897,8 +10293,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37259, - serialized_end=37327, + serialized_start=38522, + serialized_end=38590, ) _GETTOKENSTATUSESRESPONSE_GETTOKENSTATUSESRESPONSEV0_TOKENSTATUSES = _descriptor.Descriptor( @@ -9928,8 +10324,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=37330, - serialized_end=37466, + serialized_start=38593, + serialized_end=38729, ) _GETTOKENSTATUSESRESPONSE_GETTOKENSTATUSESRESPONSEV0 = _descriptor.Descriptor( @@ -9978,8 +10374,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36995, - serialized_end=37476, + serialized_start=38258, + serialized_end=38739, ) _GETTOKENSTATUSESRESPONSE = _descriptor.Descriptor( @@ -10014,8 +10410,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36872, - serialized_end=37487, + serialized_start=38135, + serialized_end=38750, ) @@ -10053,8 +10449,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=37645, - serialized_end=37718, + serialized_start=38908, + serialized_end=38981, ) _GETTOKENDIRECTPURCHASEPRICESREQUEST = _descriptor.Descriptor( @@ -10089,8 +10485,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37490, - serialized_end=37729, + serialized_start=38753, + serialized_end=38992, ) @@ -10128,8 +10524,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=38219, - serialized_end=38270, + serialized_start=39482, + serialized_end=39533, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0_PRICINGSCHEDULE = _descriptor.Descriptor( @@ -10159,8 +10555,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=38273, - serialized_end=38440, + serialized_start=39536, + serialized_end=39703, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0_TOKENDIRECTPURCHASEPRICEENTRY = _descriptor.Descriptor( @@ -10209,8 +10605,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38443, - serialized_end=38671, + serialized_start=39706, + serialized_end=39934, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0_TOKENDIRECTPURCHASEPRICES = _descriptor.Descriptor( @@ -10240,8 +10636,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=38674, - serialized_end=38874, + serialized_start=39937, + serialized_end=40137, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0 = _descriptor.Descriptor( @@ -10290,8 +10686,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37891, - serialized_end=38884, + serialized_start=39154, + serialized_end=40147, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE = _descriptor.Descriptor( @@ -10326,8 +10722,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37732, - serialized_end=38895, + serialized_start=38995, + serialized_end=40158, ) @@ -10365,8 +10761,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39029, - serialized_end=39093, + serialized_start=40292, + serialized_end=40356, ) _GETTOKENCONTRACTINFOREQUEST = _descriptor.Descriptor( @@ -10401,8 +10797,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38898, - serialized_end=39104, + serialized_start=40161, + serialized_end=40367, ) @@ -10440,8 +10836,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39516, - serialized_end=39593, + serialized_start=40779, + serialized_end=40856, ) _GETTOKENCONTRACTINFORESPONSE_GETTOKENCONTRACTINFORESPONSEV0 = _descriptor.Descriptor( @@ -10490,8 +10886,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39242, - serialized_end=39603, + serialized_start=40505, + serialized_end=40866, ) _GETTOKENCONTRACTINFORESPONSE = _descriptor.Descriptor( @@ -10526,8 +10922,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39107, - serialized_end=39614, + serialized_start=40370, + serialized_end=40877, ) @@ -10582,8 +10978,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40047, - serialized_end=40201, + serialized_start=41310, + serialized_end=41464, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSREQUEST_GETTOKENPREPROGRAMMEDDISTRIBUTIONSREQUESTV0 = _descriptor.Descriptor( @@ -10644,8 +11040,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39791, - serialized_end=40229, + serialized_start=41054, + serialized_end=41492, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSREQUEST = _descriptor.Descriptor( @@ -10680,8 +11076,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39617, - serialized_end=40240, + serialized_start=40880, + serialized_end=41503, ) @@ -10719,8 +11115,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=40751, - serialized_end=40813, + serialized_start=42014, + serialized_end=42076, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE_GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSEV0_TOKENTIMEDDISTRIBUTIONENTRY = _descriptor.Descriptor( @@ -10757,8 +11153,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=40816, - serialized_end=41028, + serialized_start=42079, + serialized_end=42291, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE_GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSEV0_TOKENDISTRIBUTIONS = _descriptor.Descriptor( @@ -10788,8 +11184,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=41031, - serialized_end=41226, + serialized_start=42294, + serialized_end=42489, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE_GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSEV0 = _descriptor.Descriptor( @@ -10838,8 +11234,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40421, - serialized_end=41236, + serialized_start=41684, + serialized_end=42499, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE = _descriptor.Descriptor( @@ -10874,8 +11270,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40243, - serialized_end=41247, + serialized_start=41506, + serialized_end=42510, ) @@ -10913,8 +11309,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=41436, - serialized_end=41509, + serialized_start=42699, + serialized_end=42772, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMREQUEST_GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMREQUESTV0 = _descriptor.Descriptor( @@ -10970,8 +11366,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41512, - serialized_end=41753, + serialized_start=42775, + serialized_end=43016, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMREQUEST = _descriptor.Descriptor( @@ -11006,8 +11402,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41250, - serialized_end=41764, + serialized_start=42513, + serialized_end=43027, ) @@ -11064,8 +11460,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=42285, - serialized_end=42405, + serialized_start=43548, + serialized_end=43668, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMRESPONSE_GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMRESPONSEV0 = _descriptor.Descriptor( @@ -11114,8 +11510,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41957, - serialized_end=42415, + serialized_start=43220, + serialized_end=43678, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMRESPONSE = _descriptor.Descriptor( @@ -11150,8 +11546,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41767, - serialized_end=42426, + serialized_start=43030, + serialized_end=43689, ) @@ -11189,8 +11585,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42557, - serialized_end=42620, + serialized_start=43820, + serialized_end=43883, ) _GETTOKENTOTALSUPPLYREQUEST = _descriptor.Descriptor( @@ -11225,8 +11621,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=42429, - serialized_end=42631, + serialized_start=43692, + serialized_end=43894, ) @@ -11271,8 +11667,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=43052, - serialized_end=43172, + serialized_start=44315, + serialized_end=44435, ) _GETTOKENTOTALSUPPLYRESPONSE_GETTOKENTOTALSUPPLYRESPONSEV0 = _descriptor.Descriptor( @@ -11321,8 +11717,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=42766, - serialized_end=43182, + serialized_start=44029, + serialized_end=44445, ) _GETTOKENTOTALSUPPLYRESPONSE = _descriptor.Descriptor( @@ -11357,8 +11753,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=42634, - serialized_end=43193, + serialized_start=43897, + serialized_end=44456, ) @@ -11403,8 +11799,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=43303, - serialized_end=43395, + serialized_start=44566, + serialized_end=44658, ) _GETGROUPINFOREQUEST = _descriptor.Descriptor( @@ -11439,8 +11835,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43196, - serialized_end=43406, + serialized_start=44459, + serialized_end=44669, ) @@ -11478,8 +11874,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=43764, - serialized_end=43816, + serialized_start=45027, + serialized_end=45079, ) _GETGROUPINFORESPONSE_GETGROUPINFORESPONSEV0_GROUPINFOENTRY = _descriptor.Descriptor( @@ -11516,8 +11912,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=43819, - serialized_end=43971, + serialized_start=45082, + serialized_end=45234, ) _GETGROUPINFORESPONSE_GETGROUPINFORESPONSEV0_GROUPINFO = _descriptor.Descriptor( @@ -11552,8 +11948,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43974, - serialized_end=44112, + serialized_start=45237, + serialized_end=45375, ) _GETGROUPINFORESPONSE_GETGROUPINFORESPONSEV0 = _descriptor.Descriptor( @@ -11602,8 +11998,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43520, - serialized_end=44122, + serialized_start=44783, + serialized_end=45385, ) _GETGROUPINFORESPONSE = _descriptor.Descriptor( @@ -11638,8 +12034,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43409, - serialized_end=44133, + serialized_start=44672, + serialized_end=45396, ) @@ -11677,8 +12073,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=44246, - serialized_end=44363, + serialized_start=45509, + serialized_end=45626, ) _GETGROUPINFOSREQUEST_GETGROUPINFOSREQUESTV0 = _descriptor.Descriptor( @@ -11739,8 +12135,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44366, - serialized_end=44618, + serialized_start=45629, + serialized_end=45881, ) _GETGROUPINFOSREQUEST = _descriptor.Descriptor( @@ -11775,8 +12171,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44136, - serialized_end=44629, + serialized_start=45399, + serialized_end=45892, ) @@ -11814,8 +12210,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=43764, - serialized_end=43816, + serialized_start=45027, + serialized_end=45079, ) _GETGROUPINFOSRESPONSE_GETGROUPINFOSRESPONSEV0_GROUPPOSITIONINFOENTRY = _descriptor.Descriptor( @@ -11859,8 +12255,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45050, - serialized_end=45245, + serialized_start=46313, + serialized_end=46508, ) _GETGROUPINFOSRESPONSE_GETGROUPINFOSRESPONSEV0_GROUPINFOS = _descriptor.Descriptor( @@ -11890,8 +12286,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45248, - serialized_end=45378, + serialized_start=46511, + serialized_end=46641, ) _GETGROUPINFOSRESPONSE_GETGROUPINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -11940,8 +12336,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44746, - serialized_end=45388, + serialized_start=46009, + serialized_end=46651, ) _GETGROUPINFOSRESPONSE = _descriptor.Descriptor( @@ -11976,8 +12372,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44632, - serialized_end=45399, + serialized_start=45895, + serialized_end=46662, ) @@ -12015,8 +12411,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45518, - serialized_end=45594, + serialized_start=46781, + serialized_end=46857, ) _GETGROUPACTIONSREQUEST_GETGROUPACTIONSREQUESTV0 = _descriptor.Descriptor( @@ -12091,8 +12487,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45597, - serialized_end=45925, + serialized_start=46860, + serialized_end=47188, ) _GETGROUPACTIONSREQUEST = _descriptor.Descriptor( @@ -12128,8 +12524,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45402, - serialized_end=45976, + serialized_start=46665, + serialized_end=47239, ) @@ -12179,8 +12575,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46358, - serialized_end=46449, + serialized_start=47621, + serialized_end=47712, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_BURNEVENT = _descriptor.Descriptor( @@ -12229,8 +12625,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46451, - serialized_end=46542, + serialized_start=47714, + serialized_end=47805, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_FREEZEEVENT = _descriptor.Descriptor( @@ -12272,8 +12668,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46544, - serialized_end=46618, + serialized_start=47807, + serialized_end=47881, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UNFREEZEEVENT = _descriptor.Descriptor( @@ -12315,8 +12711,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46620, - serialized_end=46696, + serialized_start=47883, + serialized_end=47959, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_DESTROYFROZENFUNDSEVENT = _descriptor.Descriptor( @@ -12365,8 +12761,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46698, - serialized_end=46800, + serialized_start=47961, + serialized_end=48063, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_SHAREDENCRYPTEDNOTE = _descriptor.Descriptor( @@ -12410,8 +12806,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=46802, - serialized_end=46902, + serialized_start=48065, + serialized_end=48165, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_PERSONALENCRYPTEDNOTE = _descriptor.Descriptor( @@ -12455,8 +12851,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=46904, - serialized_end=47027, + serialized_start=48167, + serialized_end=48290, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_EMERGENCYACTIONEVENT = _descriptor.Descriptor( @@ -12499,8 +12895,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47030, - serialized_end=47263, + serialized_start=48293, + serialized_end=48526, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_TOKENCONFIGUPDATEEVENT = _descriptor.Descriptor( @@ -12542,8 +12938,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47265, - serialized_end=47365, + serialized_start=48528, + serialized_end=48628, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UPDATEDIRECTPURCHASEPRICEEVENT_PRICEFORQUANTITY = _descriptor.Descriptor( @@ -12580,8 +12976,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=38219, - serialized_end=38270, + serialized_start=39482, + serialized_end=39533, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UPDATEDIRECTPURCHASEPRICEEVENT_PRICINGSCHEDULE = _descriptor.Descriptor( @@ -12611,8 +13007,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=47657, - serialized_end=47829, + serialized_start=48920, + serialized_end=49092, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UPDATEDIRECTPURCHASEPRICEEVENT = _descriptor.Descriptor( @@ -12666,8 +13062,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47368, - serialized_end=47854, + serialized_start=48631, + serialized_end=49117, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_GROUPACTIONEVENT = _descriptor.Descriptor( @@ -12716,8 +13112,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47857, - serialized_end=48237, + serialized_start=49120, + serialized_end=49500, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_DOCUMENTEVENT = _descriptor.Descriptor( @@ -12752,8 +13148,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48240, - serialized_end=48379, + serialized_start=49503, + serialized_end=49642, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_DOCUMENTCREATEEVENT = _descriptor.Descriptor( @@ -12783,8 +13179,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=48381, - serialized_end=48428, + serialized_start=49644, + serialized_end=49691, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_CONTRACTUPDATEEVENT = _descriptor.Descriptor( @@ -12814,8 +13210,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=48430, - serialized_end=48477, + serialized_start=49693, + serialized_end=49740, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_CONTRACTEVENT = _descriptor.Descriptor( @@ -12850,8 +13246,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48480, - serialized_end=48619, + serialized_start=49743, + serialized_end=49882, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_TOKENEVENT = _descriptor.Descriptor( @@ -12935,8 +13331,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48622, - serialized_end=49599, + serialized_start=49885, + serialized_end=50862, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_GROUPACTIONENTRY = _descriptor.Descriptor( @@ -12973,8 +13369,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=49602, - serialized_end=49749, + serialized_start=50865, + serialized_end=51012, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_GROUPACTIONS = _descriptor.Descriptor( @@ -13004,8 +13400,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=49752, - serialized_end=49884, + serialized_start=51015, + serialized_end=51147, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0 = _descriptor.Descriptor( @@ -13054,8 +13450,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46099, - serialized_end=49894, + serialized_start=47362, + serialized_end=51157, ) _GETGROUPACTIONSRESPONSE = _descriptor.Descriptor( @@ -13090,8 +13486,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45979, - serialized_end=49905, + serialized_start=47242, + serialized_end=51168, ) @@ -13150,8 +13546,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=50043, - serialized_end=50249, + serialized_start=51306, + serialized_end=51512, ) _GETGROUPACTIONSIGNERSREQUEST = _descriptor.Descriptor( @@ -13187,8 +13583,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=49908, - serialized_end=50300, + serialized_start=51171, + serialized_end=51563, ) @@ -13226,8 +13622,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=50732, - serialized_end=50785, + serialized_start=51995, + serialized_end=52048, ) _GETGROUPACTIONSIGNERSRESPONSE_GETGROUPACTIONSIGNERSRESPONSEV0_GROUPACTIONSIGNERS = _descriptor.Descriptor( @@ -13257,8 +13653,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=50788, - serialized_end=50933, + serialized_start=52051, + serialized_end=52196, ) _GETGROUPACTIONSIGNERSRESPONSE_GETGROUPACTIONSIGNERSRESPONSEV0 = _descriptor.Descriptor( @@ -13307,8 +13703,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=50441, - serialized_end=50943, + serialized_start=51704, + serialized_end=52206, ) _GETGROUPACTIONSIGNERSRESPONSE = _descriptor.Descriptor( @@ -13343,10 +13739,48 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=50303, - serialized_end=50954, -) - + serialized_start=51566, + serialized_end=52217, +) + +_PLATFORMSUBSCRIPTIONREQUEST_PLATFORMSUBSCRIPTIONREQUESTV0.fields_by_name['filter'].message_type = _PLATFORMFILTERV0 +_PLATFORMSUBSCRIPTIONREQUEST_PLATFORMSUBSCRIPTIONREQUESTV0.containing_type = _PLATFORMSUBSCRIPTIONREQUEST +_PLATFORMSUBSCRIPTIONREQUEST.fields_by_name['v0'].message_type = _PLATFORMSUBSCRIPTIONREQUEST_PLATFORMSUBSCRIPTIONREQUESTV0 +_PLATFORMSUBSCRIPTIONREQUEST.oneofs_by_name['version'].fields.append( + _PLATFORMSUBSCRIPTIONREQUEST.fields_by_name['v0']) +_PLATFORMSUBSCRIPTIONREQUEST.fields_by_name['v0'].containing_oneof = _PLATFORMSUBSCRIPTIONREQUEST.oneofs_by_name['version'] +_PLATFORMSUBSCRIPTIONRESPONSE_PLATFORMSUBSCRIPTIONRESPONSEV0.fields_by_name['event'].message_type = _PLATFORMEVENTV0 +_PLATFORMSUBSCRIPTIONRESPONSE_PLATFORMSUBSCRIPTIONRESPONSEV0.containing_type = _PLATFORMSUBSCRIPTIONRESPONSE +_PLATFORMSUBSCRIPTIONRESPONSE.fields_by_name['v0'].message_type = _PLATFORMSUBSCRIPTIONRESPONSE_PLATFORMSUBSCRIPTIONRESPONSEV0 +_PLATFORMSUBSCRIPTIONRESPONSE.oneofs_by_name['version'].fields.append( + _PLATFORMSUBSCRIPTIONRESPONSE.fields_by_name['v0']) +_PLATFORMSUBSCRIPTIONRESPONSE.fields_by_name['v0'].containing_oneof = _PLATFORMSUBSCRIPTIONRESPONSE.oneofs_by_name['version'] +_STATETRANSITIONRESULTFILTER.oneofs_by_name['_tx_hash'].fields.append( + _STATETRANSITIONRESULTFILTER.fields_by_name['tx_hash']) +_STATETRANSITIONRESULTFILTER.fields_by_name['tx_hash'].containing_oneof = _STATETRANSITIONRESULTFILTER.oneofs_by_name['_tx_hash'] +_PLATFORMFILTERV0.fields_by_name['state_transition_result'].message_type = _STATETRANSITIONRESULTFILTER +_PLATFORMFILTERV0.oneofs_by_name['kind'].fields.append( + _PLATFORMFILTERV0.fields_by_name['all']) +_PLATFORMFILTERV0.fields_by_name['all'].containing_oneof = _PLATFORMFILTERV0.oneofs_by_name['kind'] +_PLATFORMFILTERV0.oneofs_by_name['kind'].fields.append( + _PLATFORMFILTERV0.fields_by_name['block_committed']) +_PLATFORMFILTERV0.fields_by_name['block_committed'].containing_oneof = _PLATFORMFILTERV0.oneofs_by_name['kind'] +_PLATFORMFILTERV0.oneofs_by_name['kind'].fields.append( + _PLATFORMFILTERV0.fields_by_name['state_transition_result']) +_PLATFORMFILTERV0.fields_by_name['state_transition_result'].containing_oneof = _PLATFORMFILTERV0.oneofs_by_name['kind'] +_PLATFORMEVENTV0_BLOCKMETADATA.containing_type = _PLATFORMEVENTV0 +_PLATFORMEVENTV0_BLOCKCOMMITTED.fields_by_name['meta'].message_type = _PLATFORMEVENTV0_BLOCKMETADATA +_PLATFORMEVENTV0_BLOCKCOMMITTED.containing_type = _PLATFORMEVENTV0 +_PLATFORMEVENTV0_STATETRANSITIONFINALIZED.fields_by_name['meta'].message_type = _PLATFORMEVENTV0_BLOCKMETADATA +_PLATFORMEVENTV0_STATETRANSITIONFINALIZED.containing_type = _PLATFORMEVENTV0 +_PLATFORMEVENTV0.fields_by_name['block_committed'].message_type = _PLATFORMEVENTV0_BLOCKCOMMITTED +_PLATFORMEVENTV0.fields_by_name['state_transition_finalized'].message_type = _PLATFORMEVENTV0_STATETRANSITIONFINALIZED +_PLATFORMEVENTV0.oneofs_by_name['event'].fields.append( + _PLATFORMEVENTV0.fields_by_name['block_committed']) +_PLATFORMEVENTV0.fields_by_name['block_committed'].containing_oneof = _PLATFORMEVENTV0.oneofs_by_name['event'] +_PLATFORMEVENTV0.oneofs_by_name['event'].fields.append( + _PLATFORMEVENTV0.fields_by_name['state_transition_finalized']) +_PLATFORMEVENTV0.fields_by_name['state_transition_finalized'].containing_oneof = _PLATFORMEVENTV0.oneofs_by_name['event'] _GETIDENTITYREQUEST_GETIDENTITYREQUESTV0.containing_type = _GETIDENTITYREQUEST _GETIDENTITYREQUEST.fields_by_name['v0'].message_type = _GETIDENTITYREQUEST_GETIDENTITYREQUESTV0 _GETIDENTITYREQUEST.oneofs_by_name['version'].fields.append( @@ -14643,6 +15077,11 @@ _GETGROUPACTIONSIGNERSRESPONSE.oneofs_by_name['version'].fields.append( _GETGROUPACTIONSIGNERSRESPONSE.fields_by_name['v0']) _GETGROUPACTIONSIGNERSRESPONSE.fields_by_name['v0'].containing_oneof = _GETGROUPACTIONSIGNERSRESPONSE.oneofs_by_name['version'] +DESCRIPTOR.message_types_by_name['PlatformSubscriptionRequest'] = _PLATFORMSUBSCRIPTIONREQUEST +DESCRIPTOR.message_types_by_name['PlatformSubscriptionResponse'] = _PLATFORMSUBSCRIPTIONRESPONSE +DESCRIPTOR.message_types_by_name['StateTransitionResultFilter'] = _STATETRANSITIONRESULTFILTER +DESCRIPTOR.message_types_by_name['PlatformFilterV0'] = _PLATFORMFILTERV0 +DESCRIPTOR.message_types_by_name['PlatformEventV0'] = _PLATFORMEVENTV0 DESCRIPTOR.message_types_by_name['Proof'] = _PROOF DESCRIPTOR.message_types_by_name['ResponseMetadata'] = _RESPONSEMETADATA DESCRIPTOR.message_types_by_name['StateTransitionBroadcastError'] = _STATETRANSITIONBROADCASTERROR @@ -14747,6 +15186,81 @@ DESCRIPTOR.enum_types_by_name['KeyPurpose'] = _KEYPURPOSE _sym_db.RegisterFileDescriptor(DESCRIPTOR) +PlatformSubscriptionRequest = _reflection.GeneratedProtocolMessageType('PlatformSubscriptionRequest', (_message.Message,), { + + 'PlatformSubscriptionRequestV0' : _reflection.GeneratedProtocolMessageType('PlatformSubscriptionRequestV0', (_message.Message,), { + 'DESCRIPTOR' : _PLATFORMSUBSCRIPTIONREQUEST_PLATFORMSUBSCRIPTIONREQUESTV0, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0) + }) + , + 'DESCRIPTOR' : _PLATFORMSUBSCRIPTIONREQUEST, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformSubscriptionRequest) + }) +_sym_db.RegisterMessage(PlatformSubscriptionRequest) +_sym_db.RegisterMessage(PlatformSubscriptionRequest.PlatformSubscriptionRequestV0) + +PlatformSubscriptionResponse = _reflection.GeneratedProtocolMessageType('PlatformSubscriptionResponse', (_message.Message,), { + + 'PlatformSubscriptionResponseV0' : _reflection.GeneratedProtocolMessageType('PlatformSubscriptionResponseV0', (_message.Message,), { + 'DESCRIPTOR' : _PLATFORMSUBSCRIPTIONRESPONSE_PLATFORMSUBSCRIPTIONRESPONSEV0, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0) + }) + , + 'DESCRIPTOR' : _PLATFORMSUBSCRIPTIONRESPONSE, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformSubscriptionResponse) + }) +_sym_db.RegisterMessage(PlatformSubscriptionResponse) +_sym_db.RegisterMessage(PlatformSubscriptionResponse.PlatformSubscriptionResponseV0) + +StateTransitionResultFilter = _reflection.GeneratedProtocolMessageType('StateTransitionResultFilter', (_message.Message,), { + 'DESCRIPTOR' : _STATETRANSITIONRESULTFILTER, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.StateTransitionResultFilter) + }) +_sym_db.RegisterMessage(StateTransitionResultFilter) + +PlatformFilterV0 = _reflection.GeneratedProtocolMessageType('PlatformFilterV0', (_message.Message,), { + 'DESCRIPTOR' : _PLATFORMFILTERV0, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformFilterV0) + }) +_sym_db.RegisterMessage(PlatformFilterV0) + +PlatformEventV0 = _reflection.GeneratedProtocolMessageType('PlatformEventV0', (_message.Message,), { + + 'BlockMetadata' : _reflection.GeneratedProtocolMessageType('BlockMetadata', (_message.Message,), { + 'DESCRIPTOR' : _PLATFORMEVENTV0_BLOCKMETADATA, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata) + }) + , + + 'BlockCommitted' : _reflection.GeneratedProtocolMessageType('BlockCommitted', (_message.Message,), { + 'DESCRIPTOR' : _PLATFORMEVENTV0_BLOCKCOMMITTED, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted) + }) + , + + 'StateTransitionFinalized' : _reflection.GeneratedProtocolMessageType('StateTransitionFinalized', (_message.Message,), { + 'DESCRIPTOR' : _PLATFORMEVENTV0_STATETRANSITIONFINALIZED, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized) + }) + , + 'DESCRIPTOR' : _PLATFORMEVENTV0, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformEventV0) + }) +_sym_db.RegisterMessage(PlatformEventV0) +_sym_db.RegisterMessage(PlatformEventV0.BlockMetadata) +_sym_db.RegisterMessage(PlatformEventV0.BlockCommitted) +_sym_db.RegisterMessage(PlatformEventV0.StateTransitionFinalized) + Proof = _reflection.GeneratedProtocolMessageType('Proof', (_message.Message,), { 'DESCRIPTOR' : _PROOF, '__module__' : 'platform_pb2' @@ -17079,6 +17593,8 @@ _sym_db.RegisterMessage(GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSigners) +_PLATFORMEVENTV0_BLOCKMETADATA.fields_by_name['height']._options = None +_PLATFORMEVENTV0_BLOCKMETADATA.fields_by_name['time_ms']._options = None _RESPONSEMETADATA.fields_by_name['height']._options = None _RESPONSEMETADATA.fields_by_name['time_ms']._options = None _GETIDENTITYNONCERESPONSE_GETIDENTITYNONCERESPONSEV0.fields_by_name['identity_nonce']._options = None @@ -17131,8 +17647,8 @@ index=0, serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_start=51049, - serialized_end=57934, + serialized_start=52312, + serialized_end=59340, methods=[ _descriptor.MethodDescriptor( name='broadcastStateTransition', @@ -17604,6 +18120,16 @@ serialized_options=None, create_key=_descriptor._internal_create_key, ), + _descriptor.MethodDescriptor( + name='SubscribePlatformEvents', + full_name='org.dash.platform.dapi.v0.Platform.SubscribePlatformEvents', + index=47, + containing_service=None, + input_type=_PLATFORMSUBSCRIPTIONREQUEST, + output_type=_PLATFORMSUBSCRIPTIONRESPONSE, + serialized_options=None, + create_key=_descriptor._internal_create_key, + ), ]) _sym_db.RegisterServiceDescriptor(_PLATFORM) diff --git a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py index 9460c244724..849996d3ff0 100644 --- a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py +++ b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py @@ -249,6 +249,11 @@ def __init__(self, channel): request_serializer=platform__pb2.GetGroupActionSignersRequest.SerializeToString, response_deserializer=platform__pb2.GetGroupActionSignersResponse.FromString, ) + self.SubscribePlatformEvents = channel.unary_stream( + '/org.dash.platform.dapi.v0.Platform/SubscribePlatformEvents', + request_serializer=platform__pb2.PlatformSubscriptionRequest.SerializeToString, + response_deserializer=platform__pb2.PlatformSubscriptionResponse.FromString, + ) class PlatformServicer(object): @@ -541,6 +546,13 @@ def getGroupActionSigners(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def SubscribePlatformEvents(self, request, context): + """Bi-directional stream for multiplexed platform events subscriptions + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def add_PlatformServicer_to_server(servicer, server): rpc_method_handlers = { @@ -779,6 +791,11 @@ def add_PlatformServicer_to_server(servicer, server): request_deserializer=platform__pb2.GetGroupActionSignersRequest.FromString, response_serializer=platform__pb2.GetGroupActionSignersResponse.SerializeToString, ), + 'SubscribePlatformEvents': grpc.unary_stream_rpc_method_handler( + servicer.SubscribePlatformEvents, + request_deserializer=platform__pb2.PlatformSubscriptionRequest.FromString, + response_serializer=platform__pb2.PlatformSubscriptionResponse.SerializeToString, + ), } generic_handler = grpc.method_handlers_generic_handler( 'org.dash.platform.dapi.v0.Platform', rpc_method_handlers) @@ -1587,3 +1604,20 @@ def getGroupActionSigners(request, platform__pb2.GetGroupActionSignersResponse.FromString, options, channel_credentials, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) + + @staticmethod + def SubscribePlatformEvents(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_stream(request, target, '/org.dash.platform.dapi.v0.Platform/SubscribePlatformEvents', + platform__pb2.PlatformSubscriptionRequest.SerializeToString, + platform__pb2.PlatformSubscriptionResponse.FromString, + options, channel_credentials, + insecure, call_credentials, compression, wait_for_ready, timeout, metadata) diff --git a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts index f3c161501a9..d1638d636c3 100644 --- a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts +++ b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts @@ -6,6 +6,295 @@ import * as google_protobuf_wrappers_pb from "google-protobuf/google/protobuf/wr import * as google_protobuf_struct_pb from "google-protobuf/google/protobuf/struct_pb"; import * as google_protobuf_timestamp_pb from "google-protobuf/google/protobuf/timestamp_pb"; +export class PlatformSubscriptionRequest extends jspb.Message { + hasV0(): boolean; + clearV0(): void; + getV0(): PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 | undefined; + setV0(value?: PlatformSubscriptionRequest.PlatformSubscriptionRequestV0): void; + + getVersionCase(): PlatformSubscriptionRequest.VersionCase; + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): PlatformSubscriptionRequest.AsObject; + static toObject(includeInstance: boolean, msg: PlatformSubscriptionRequest): PlatformSubscriptionRequest.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: PlatformSubscriptionRequest, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): PlatformSubscriptionRequest; + static deserializeBinaryFromReader(message: PlatformSubscriptionRequest, reader: jspb.BinaryReader): PlatformSubscriptionRequest; +} + +export namespace PlatformSubscriptionRequest { + export type AsObject = { + v0?: PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.AsObject, + } + + export class PlatformSubscriptionRequestV0 extends jspb.Message { + hasFilter(): boolean; + clearFilter(): void; + getFilter(): PlatformFilterV0 | undefined; + setFilter(value?: PlatformFilterV0): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): PlatformSubscriptionRequestV0.AsObject; + static toObject(includeInstance: boolean, msg: PlatformSubscriptionRequestV0): PlatformSubscriptionRequestV0.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: PlatformSubscriptionRequestV0, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): PlatformSubscriptionRequestV0; + static deserializeBinaryFromReader(message: PlatformSubscriptionRequestV0, reader: jspb.BinaryReader): PlatformSubscriptionRequestV0; + } + + export namespace PlatformSubscriptionRequestV0 { + export type AsObject = { + filter?: PlatformFilterV0.AsObject, + } + } + + export enum VersionCase { + VERSION_NOT_SET = 0, + V0 = 1, + } +} + +export class PlatformSubscriptionResponse extends jspb.Message { + hasV0(): boolean; + clearV0(): void; + getV0(): PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 | undefined; + setV0(value?: PlatformSubscriptionResponse.PlatformSubscriptionResponseV0): void; + + getVersionCase(): PlatformSubscriptionResponse.VersionCase; + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): PlatformSubscriptionResponse.AsObject; + static toObject(includeInstance: boolean, msg: PlatformSubscriptionResponse): PlatformSubscriptionResponse.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: PlatformSubscriptionResponse, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): PlatformSubscriptionResponse; + static deserializeBinaryFromReader(message: PlatformSubscriptionResponse, reader: jspb.BinaryReader): PlatformSubscriptionResponse; +} + +export namespace PlatformSubscriptionResponse { + export type AsObject = { + v0?: PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.AsObject, + } + + export class PlatformSubscriptionResponseV0 extends jspb.Message { + getClientSubscriptionId(): string; + setClientSubscriptionId(value: string): void; + + hasEvent(): boolean; + clearEvent(): void; + getEvent(): PlatformEventV0 | undefined; + setEvent(value?: PlatformEventV0): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): PlatformSubscriptionResponseV0.AsObject; + static toObject(includeInstance: boolean, msg: PlatformSubscriptionResponseV0): PlatformSubscriptionResponseV0.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: PlatformSubscriptionResponseV0, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): PlatformSubscriptionResponseV0; + static deserializeBinaryFromReader(message: PlatformSubscriptionResponseV0, reader: jspb.BinaryReader): PlatformSubscriptionResponseV0; + } + + export namespace PlatformSubscriptionResponseV0 { + export type AsObject = { + clientSubscriptionId: string, + event?: PlatformEventV0.AsObject, + } + } + + export enum VersionCase { + VERSION_NOT_SET = 0, + V0 = 1, + } +} + +export class StateTransitionResultFilter extends jspb.Message { + hasTxHash(): boolean; + clearTxHash(): void; + getTxHash(): Uint8Array | string; + getTxHash_asU8(): Uint8Array; + getTxHash_asB64(): string; + setTxHash(value: Uint8Array | string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): StateTransitionResultFilter.AsObject; + static toObject(includeInstance: boolean, msg: StateTransitionResultFilter): StateTransitionResultFilter.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: StateTransitionResultFilter, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): StateTransitionResultFilter; + static deserializeBinaryFromReader(message: StateTransitionResultFilter, reader: jspb.BinaryReader): StateTransitionResultFilter; +} + +export namespace StateTransitionResultFilter { + export type AsObject = { + txHash: Uint8Array | string, + } +} + +export class PlatformFilterV0 extends jspb.Message { + hasAll(): boolean; + clearAll(): void; + getAll(): boolean; + setAll(value: boolean): void; + + hasBlockCommitted(): boolean; + clearBlockCommitted(): void; + getBlockCommitted(): boolean; + setBlockCommitted(value: boolean): void; + + hasStateTransitionResult(): boolean; + clearStateTransitionResult(): void; + getStateTransitionResult(): StateTransitionResultFilter | undefined; + setStateTransitionResult(value?: StateTransitionResultFilter): void; + + getKindCase(): PlatformFilterV0.KindCase; + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): PlatformFilterV0.AsObject; + static toObject(includeInstance: boolean, msg: PlatformFilterV0): PlatformFilterV0.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: PlatformFilterV0, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): PlatformFilterV0; + static deserializeBinaryFromReader(message: PlatformFilterV0, reader: jspb.BinaryReader): PlatformFilterV0; +} + +export namespace PlatformFilterV0 { + export type AsObject = { + all: boolean, + blockCommitted: boolean, + stateTransitionResult?: StateTransitionResultFilter.AsObject, + } + + export enum KindCase { + KIND_NOT_SET = 0, + ALL = 1, + BLOCK_COMMITTED = 2, + STATE_TRANSITION_RESULT = 3, + } +} + +export class PlatformEventV0 extends jspb.Message { + hasBlockCommitted(): boolean; + clearBlockCommitted(): void; + getBlockCommitted(): PlatformEventV0.BlockCommitted | undefined; + setBlockCommitted(value?: PlatformEventV0.BlockCommitted): void; + + hasStateTransitionFinalized(): boolean; + clearStateTransitionFinalized(): void; + getStateTransitionFinalized(): PlatformEventV0.StateTransitionFinalized | undefined; + setStateTransitionFinalized(value?: PlatformEventV0.StateTransitionFinalized): void; + + getEventCase(): PlatformEventV0.EventCase; + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): PlatformEventV0.AsObject; + static toObject(includeInstance: boolean, msg: PlatformEventV0): PlatformEventV0.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: PlatformEventV0, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): PlatformEventV0; + static deserializeBinaryFromReader(message: PlatformEventV0, reader: jspb.BinaryReader): PlatformEventV0; +} + +export namespace PlatformEventV0 { + export type AsObject = { + blockCommitted?: PlatformEventV0.BlockCommitted.AsObject, + stateTransitionFinalized?: PlatformEventV0.StateTransitionFinalized.AsObject, + } + + export class BlockMetadata extends jspb.Message { + getHeight(): string; + setHeight(value: string): void; + + getTimeMs(): string; + setTimeMs(value: string): void; + + getBlockIdHash(): Uint8Array | string; + getBlockIdHash_asU8(): Uint8Array; + getBlockIdHash_asB64(): string; + setBlockIdHash(value: Uint8Array | string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): BlockMetadata.AsObject; + static toObject(includeInstance: boolean, msg: BlockMetadata): BlockMetadata.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: BlockMetadata, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): BlockMetadata; + static deserializeBinaryFromReader(message: BlockMetadata, reader: jspb.BinaryReader): BlockMetadata; + } + + export namespace BlockMetadata { + export type AsObject = { + height: string, + timeMs: string, + blockIdHash: Uint8Array | string, + } + } + + export class BlockCommitted extends jspb.Message { + hasMeta(): boolean; + clearMeta(): void; + getMeta(): PlatformEventV0.BlockMetadata | undefined; + setMeta(value?: PlatformEventV0.BlockMetadata): void; + + getTxCount(): number; + setTxCount(value: number): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): BlockCommitted.AsObject; + static toObject(includeInstance: boolean, msg: BlockCommitted): BlockCommitted.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: BlockCommitted, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): BlockCommitted; + static deserializeBinaryFromReader(message: BlockCommitted, reader: jspb.BinaryReader): BlockCommitted; + } + + export namespace BlockCommitted { + export type AsObject = { + meta?: PlatformEventV0.BlockMetadata.AsObject, + txCount: number, + } + } + + export class StateTransitionFinalized extends jspb.Message { + hasMeta(): boolean; + clearMeta(): void; + getMeta(): PlatformEventV0.BlockMetadata | undefined; + setMeta(value?: PlatformEventV0.BlockMetadata): void; + + getTxHash(): Uint8Array | string; + getTxHash_asU8(): Uint8Array; + getTxHash_asB64(): string; + setTxHash(value: Uint8Array | string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): StateTransitionFinalized.AsObject; + static toObject(includeInstance: boolean, msg: StateTransitionFinalized): StateTransitionFinalized.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: StateTransitionFinalized, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): StateTransitionFinalized; + static deserializeBinaryFromReader(message: StateTransitionFinalized, reader: jspb.BinaryReader): StateTransitionFinalized; + } + + export namespace StateTransitionFinalized { + export type AsObject = { + meta?: PlatformEventV0.BlockMetadata.AsObject, + txHash: Uint8Array | string, + } + } + + export enum EventCase { + EVENT_NOT_SET = 0, + BLOCK_COMMITTED = 1, + STATE_TRANSITION_FINALIZED = 2, + } +} + export class Proof extends jspb.Message { getGrovedbProof(): Uint8Array | string; getGrovedbProof_asU8(): Uint8Array; diff --git a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js index 59e21a649c9..6a1b88ed549 100644 --- a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js +++ b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js @@ -460,6 +460,19 @@ goog.exportSymbol('proto.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse goog.exportSymbol('proto.org.dash.platform.dapi.v0.KeyPurpose', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.KeyRequestType', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.KeyRequestType.RequestCase', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.VersionCase', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.VersionCase', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.Proof', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.ResponseMetadata', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.SearchKey', null, { proto }); @@ -467,6 +480,7 @@ goog.exportSymbol('proto.org.dash.platform.dapi.v0.SecurityLevelMap', null, { pr goog.exportSymbol('proto.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.SpecificKeys', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.StateTransitionBroadcastError', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.StateTransitionResultFilter', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.VersionCase', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0', null, { proto }); @@ -474,6 +488,216 @@ goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultR goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.VersionCase', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0.ResultCase', null, { proto }); +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.oneofGroups_); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.displayName = 'proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.displayName = 'proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.oneofGroups_); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.displayName = 'proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.displayName = 'proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.StateTransitionResultFilter, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.displayName = 'proto.org.dash.platform.dapi.v0.StateTransitionResultFilter'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0 = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformFilterV0, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformFilterV0.displayName = 'proto.org.dash.platform.dapi.v0.PlatformFilterV0'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0 = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformEventV0, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformEventV0.displayName = 'proto.org.dash.platform.dapi.v0.PlatformEventV0'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.displayName = 'proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.displayName = 'proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.displayName = 'proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -6817,6 +7041,1964 @@ if (goog.DEBUG && !COMPILED) { proto.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSigners.displayName = 'proto.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSigners'; } +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.oneofGroups_ = [[1]]; + +/** + * @enum {number} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.VersionCase = { + VERSION_NOT_SET: 0, + V0: 1 +}; + +/** + * @return {proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.VersionCase} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.getVersionCase = function() { + return /** @type {proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.VersionCase} */(jspb.Message.computeOneofCase(this, proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.oneofGroups_[0])); +}; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.toObject = function(includeInstance, msg) { + var f, obj = { + v0: (f = msg.getV0()) && proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest; + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.deserializeBinaryFromReader); + msg.setV0(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getV0(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.serializeBinaryToWriter + ); + } +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.toObject = function(includeInstance, msg) { + var f, obj = { + filter: (f = msg.getFilter()) && proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0; + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.org.dash.platform.dapi.v0.PlatformFilterV0; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader); + msg.setFilter(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getFilter(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter + ); + } +}; + + +/** + * optional PlatformFilterV0 filter = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformFilterV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.getFilter = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformFilterV0} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0, 1)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformFilterV0|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.setFilter = function(value) { + return jspb.Message.setWrapperField(this, 1, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.clearFilter = function() { + return this.setFilter(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.hasFilter = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional PlatformSubscriptionRequestV0 v0 = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.getV0 = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0, 1)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.setV0 = function(value) { + return jspb.Message.setOneofWrapperField(this, 1, proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.clearV0 = function() { + return this.setV0(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.prototype.hasV0 = function() { + return jspb.Message.getField(this, 1) != null; +}; + + + +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.oneofGroups_ = [[1]]; + +/** + * @enum {number} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.VersionCase = { + VERSION_NOT_SET: 0, + V0: 1 +}; + +/** + * @return {proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.VersionCase} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.getVersionCase = function() { + return /** @type {proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.VersionCase} */(jspb.Message.computeOneofCase(this, proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.oneofGroups_[0])); +}; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.toObject = function(includeInstance, msg) { + var f, obj = { + v0: (f = msg.getV0()) && proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse; + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.deserializeBinaryFromReader); + msg.setV0(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getV0(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.serializeBinaryToWriter + ); + } +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.toObject = function(includeInstance, msg) { + var f, obj = { + clientSubscriptionId: jspb.Message.getFieldWithDefault(msg, 1, ""), + event: (f = msg.getEvent()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0; + return proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readString()); + msg.setClientSubscriptionId(value); + break; + case 2: + var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.deserializeBinaryFromReader); + msg.setEvent(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getClientSubscriptionId(); + if (f.length > 0) { + writer.writeString( + 1, + f + ); + } + f = message.getEvent(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.org.dash.platform.dapi.v0.PlatformEventV0.serializeBinaryToWriter + ); + } +}; + + +/** + * optional string client_subscription_id = 1; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.getClientSubscriptionId = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * @param {string} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.setClientSubscriptionId = function(value) { + return jspb.Message.setProto3StringField(this, 1, value); +}; + + +/** + * optional PlatformEventV0 event = 2; + * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.getEvent = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformEventV0} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformEventV0, 2)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformEventV0|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.setEvent = function(value) { + return jspb.Message.setWrapperField(this, 2, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.clearEvent = function() { + return this.setEvent(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.hasEvent = function() { + return jspb.Message.getField(this, 2) != null; +}; + + +/** + * optional PlatformSubscriptionResponseV0 v0 = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.getV0 = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0, 1)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.setV0 = function(value) { + return jspb.Message.setOneofWrapperField(this, 1, proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.clearV0 = function() { + return this.setV0(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.hasV0 = function() { + return jspb.Message.getField(this, 1) != null; +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject = function(includeInstance, msg) { + var f, obj = { + txHash: msg.getTxHash_asB64() + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.StateTransitionResultFilter; + return proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {!Uint8Array} */ (reader.readBytes()); + msg.setTxHash(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = /** @type {!(string|Uint8Array)} */ (jspb.Message.getField(message, 1)); + if (f != null) { + writer.writeBytes( + 1, + f + ); + } +}; + + +/** + * optional bytes tx_hash = 1; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.getTxHash = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * optional bytes tx_hash = 1; + * This is a type-conversion wrapper around `getTxHash()` + * @return {string} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.getTxHash_asB64 = function() { + return /** @type {string} */ (jspb.Message.bytesAsB64( + this.getTxHash())); +}; + + +/** + * optional bytes tx_hash = 1; + * Note that Uint8Array is not supported on all browsers. + * @see http://caniuse.com/Uint8Array + * This is a type-conversion wrapper around `getTxHash()` + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.getTxHash_asU8 = function() { + return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8( + this.getTxHash())); +}; + + +/** + * @param {!(string|Uint8Array)} value + * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} returns this + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.setTxHash = function(value) { + return jspb.Message.setField(this, 1, value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} returns this + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.clearTxHash = function() { + return jspb.Message.setField(this, 1, undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.hasTxHash = function() { + return jspb.Message.getField(this, 1) != null; +}; + + + +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_ = [[1,2,3]]; + +/** + * @enum {number} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase = { + KIND_NOT_SET: 0, + ALL: 1, + BLOCK_COMMITTED: 2, + STATE_TRANSITION_RESULT: 3 +}; + +/** + * @return {proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getKindCase = function() { + return /** @type {proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase} */(jspb.Message.computeOneofCase(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0])); +}; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject = function(includeInstance, msg) { + var f, obj = { + all: jspb.Message.getBooleanFieldWithDefault(msg, 1, false), + blockCommitted: jspb.Message.getBooleanFieldWithDefault(msg, 2, false), + stateTransitionResult: (f = msg.getStateTransitionResult()) && proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformFilterV0; + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setAll(value); + break; + case 2: + var value = /** @type {boolean} */ (reader.readBool()); + msg.setBlockCommitted(value); + break; + case 3: + var value = new proto.org.dash.platform.dapi.v0.StateTransitionResultFilter; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFromReader); + msg.setStateTransitionResult(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = /** @type {boolean} */ (jspb.Message.getField(message, 1)); + if (f != null) { + writer.writeBool( + 1, + f + ); + } + f = /** @type {boolean} */ (jspb.Message.getField(message, 2)); + if (f != null) { + writer.writeBool( + 2, + f + ); + } + f = message.getStateTransitionResult(); + if (f != null) { + writer.writeMessage( + 3, + f, + proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.serializeBinaryToWriter + ); + } +}; + + +/** + * optional bool all = 1; + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getAll = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.setAll = function(value) { + return jspb.Message.setOneofField(this, 1, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.clearAll = function() { + return jspb.Message.setOneofField(this, 1, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.hasAll = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional bool block_committed = 2; + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getBlockCommitted = function() { + return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false)); +}; + + +/** + * @param {boolean} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.setBlockCommitted = function(value) { + return jspb.Message.setOneofField(this, 2, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.clearBlockCommitted = function() { + return jspb.Message.setOneofField(this, 2, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.hasBlockCommitted = function() { + return jspb.Message.getField(this, 2) != null; +}; + + +/** + * optional StateTransitionResultFilter state_transition_result = 3; + * @return {?proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getStateTransitionResult = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.StateTransitionResultFilter, 3)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.StateTransitionResultFilter|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.setStateTransitionResult = function(value) { + return jspb.Message.setOneofWrapperField(this, 3, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.clearStateTransitionResult = function() { + return this.setStateTransitionResult(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.hasStateTransitionResult = function() { + return jspb.Message.getField(this, 3) != null; +}; + + + +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_ = [[1,2]]; + +/** + * @enum {number} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase = { + EVENT_NOT_SET: 0, + BLOCK_COMMITTED: 1, + STATE_TRANSITION_FINALIZED: 2 +}; + +/** + * @return {proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.getEventCase = function() { + return /** @type {proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase} */(jspb.Message.computeOneofCase(this, proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_[0])); +}; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformEventV0.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.toObject = function(includeInstance, msg) { + var f, obj = { + blockCommitted: (f = msg.getBlockCommitted()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.toObject(includeInstance, f), + stateTransitionFinalized: (f = msg.getStateTransitionFinalized()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.toObject(includeInstance, f) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformEventV0; + return proto.org.dash.platform.dapi.v0.PlatformEventV0.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.deserializeBinaryFromReader); + msg.setBlockCommitted(value); + break; + case 2: + var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.deserializeBinaryFromReader); + msg.setStateTransitionFinalized(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformEventV0.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getBlockCommitted(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.serializeBinaryToWriter + ); + } + f = message.getStateTransitionFinalized(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.serializeBinaryToWriter + ); + } +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.toObject = function(includeInstance, msg) { + var f, obj = { + height: jspb.Message.getFieldWithDefault(msg, 1, "0"), + timeMs: jspb.Message.getFieldWithDefault(msg, 2, "0"), + blockIdHash: msg.getBlockIdHash_asB64() + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata; + return proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setHeight(value); + break; + case 2: + var value = /** @type {string} */ (reader.readUint64String()); + msg.setTimeMs(value); + break; + case 3: + var value = /** @type {!Uint8Array} */ (reader.readBytes()); + msg.setBlockIdHash(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getHeight(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 1, + f + ); + } + f = message.getTimeMs(); + if (parseInt(f, 10) !== 0) { + writer.writeUint64String( + 2, + f + ); + } + f = message.getBlockIdHash_asU8(); + if (f.length > 0) { + writer.writeBytes( + 3, + f + ); + } +}; + + +/** + * optional uint64 height = 1; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.getHeight = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "0")); +}; + + +/** + * @param {string} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.setHeight = function(value) { + return jspb.Message.setProto3StringIntField(this, 1, value); +}; + + +/** + * optional uint64 time_ms = 2; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.getTimeMs = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "0")); +}; + + +/** + * @param {string} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.setTimeMs = function(value) { + return jspb.Message.setProto3StringIntField(this, 2, value); +}; + + +/** + * optional bytes block_id_hash = 3; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.getBlockIdHash = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, "")); +}; + + +/** + * optional bytes block_id_hash = 3; + * This is a type-conversion wrapper around `getBlockIdHash()` + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.getBlockIdHash_asB64 = function() { + return /** @type {string} */ (jspb.Message.bytesAsB64( + this.getBlockIdHash())); +}; + + +/** + * optional bytes block_id_hash = 3; + * Note that Uint8Array is not supported on all browsers. + * @see http://caniuse.com/Uint8Array + * This is a type-conversion wrapper around `getBlockIdHash()` + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.getBlockIdHash_asU8 = function() { + return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8( + this.getBlockIdHash())); +}; + + +/** + * @param {!(string|Uint8Array)} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.prototype.setBlockIdHash = function(value) { + return jspb.Message.setProto3BytesField(this, 3, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.toObject = function(includeInstance, msg) { + var f, obj = { + meta: (f = msg.getMeta()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.toObject(includeInstance, f), + txCount: jspb.Message.getFieldWithDefault(msg, 2, 0) + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted; + return proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.deserializeBinaryFromReader); + msg.setMeta(value); + break; + case 2: + var value = /** @type {number} */ (reader.readUint32()); + msg.setTxCount(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getMeta(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.serializeBinaryToWriter + ); + } + f = message.getTxCount(); + if (f !== 0) { + writer.writeUint32( + 2, + f + ); + } +}; + + +/** + * optional BlockMetadata meta = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.getMeta = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata, 1)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.setMeta = function(value) { + return jspb.Message.setWrapperField(this, 1, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.clearMeta = function() { + return this.setMeta(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.hasMeta = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional uint32 tx_count = 2; + * @return {number} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.getTxCount = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.prototype.setTxCount = function(value) { + return jspb.Message.setProto3IntField(this, 2, value); +}; + + + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.toObject = function(includeInstance, msg) { + var f, obj = { + meta: (f = msg.getMeta()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.toObject(includeInstance, f), + txHash: msg.getTxHash_asB64() + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized; + return proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + case 1: + var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.deserializeBinaryFromReader); + msg.setMeta(value); + break; + case 2: + var value = /** @type {!Uint8Array} */ (reader.readBytes()); + msg.setTxHash(value); + break; + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.serializeBinaryToWriter = function(message, writer) { + var f = undefined; + f = message.getMeta(); + if (f != null) { + writer.writeMessage( + 1, + f, + proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata.serializeBinaryToWriter + ); + } + f = message.getTxHash_asU8(); + if (f.length > 0) { + writer.writeBytes( + 2, + f + ); + } +}; + + +/** + * optional BlockMetadata meta = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.getMeta = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata, 1)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.setMeta = function(value) { + return jspb.Message.setWrapperField(this, 1, value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.clearMeta = function() { + return this.setMeta(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.hasMeta = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional bytes tx_hash = 2; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.getTxHash = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); +}; + + +/** + * optional bytes tx_hash = 2; + * This is a type-conversion wrapper around `getTxHash()` + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.getTxHash_asB64 = function() { + return /** @type {string} */ (jspb.Message.bytesAsB64( + this.getTxHash())); +}; + + +/** + * optional bytes tx_hash = 2; + * Note that Uint8Array is not supported on all browsers. + * @see http://caniuse.com/Uint8Array + * This is a type-conversion wrapper around `getTxHash()` + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.getTxHash_asU8 = function() { + return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8( + this.getTxHash())); +}; + + +/** + * @param {!(string|Uint8Array)} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototype.setTxHash = function(value) { + return jspb.Message.setProto3BytesField(this, 2, value); +}; + + +/** + * optional BlockCommitted block_committed = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.getBlockCommitted = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted, 1)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.setBlockCommitted = function(value) { + return jspb.Message.setOneofWrapperField(this, 1, proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.clearBlockCommitted = function() { + return this.setBlockCommitted(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.hasBlockCommitted = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional StateTransitionFinalized state_transition_finalized = 2; + * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.getStateTransitionFinalized = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized, 2)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.setStateTransitionFinalized = function(value) { + return jspb.Message.setOneofWrapperField(this, 2, proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.clearStateTransitionFinalized = function() { + return this.setStateTransitionFinalized(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.hasStateTransitionFinalized = function() { + return jspb.Message.getField(this, 2) != null; +}; + + + if (jspb.Message.GENERATE_TO_OBJECT) { diff --git a/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.d.ts b/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.d.ts index a2368519018..b2af61089ca 100644 --- a/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.d.ts +++ b/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.d.ts @@ -427,6 +427,15 @@ type PlatformgetGroupActionSigners = { readonly responseType: typeof platform_pb.GetGroupActionSignersResponse; }; +type PlatformSubscribePlatformEvents = { + readonly methodName: string; + readonly service: typeof Platform; + readonly requestStream: false; + readonly responseStream: true; + readonly requestType: typeof platform_pb.PlatformSubscriptionRequest; + readonly responseType: typeof platform_pb.PlatformSubscriptionResponse; +}; + export class Platform { static readonly serviceName: string; static readonly broadcastStateTransition: PlatformbroadcastStateTransition; @@ -476,6 +485,7 @@ export class Platform { static readonly getGroupInfos: PlatformgetGroupInfos; static readonly getGroupActions: PlatformgetGroupActions; static readonly getGroupActionSigners: PlatformgetGroupActionSigners; + static readonly SubscribePlatformEvents: PlatformSubscribePlatformEvents; } export type ServiceError = { message: string, code: number; metadata: grpc.Metadata } @@ -933,5 +943,6 @@ export class PlatformClient { requestMessage: platform_pb.GetGroupActionSignersRequest, callback: (error: ServiceError|null, responseMessage: platform_pb.GetGroupActionSignersResponse|null) => void ): UnaryResponse; + subscribePlatformEvents(requestMessage: platform_pb.PlatformSubscriptionRequest, metadata?: grpc.Metadata): ResponseStream; } diff --git a/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.js b/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.js index 53ee1b9da31..a609d70ee3e 100644 --- a/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.js +++ b/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.js @@ -433,6 +433,15 @@ Platform.getGroupActionSigners = { responseType: platform_pb.GetGroupActionSignersResponse }; +Platform.SubscribePlatformEvents = { + methodName: "SubscribePlatformEvents", + service: Platform, + requestStream: false, + responseStream: true, + requestType: platform_pb.PlatformSubscriptionRequest, + responseType: platform_pb.PlatformSubscriptionResponse +}; + exports.Platform = Platform; function PlatformClient(serviceHost, options) { @@ -1897,5 +1906,44 @@ PlatformClient.prototype.getGroupActionSigners = function getGroupActionSigners( }; }; +PlatformClient.prototype.subscribePlatformEvents = function subscribePlatformEvents(requestMessage, metadata) { + var listeners = { + data: [], + end: [], + status: [] + }; + var client = grpc.invoke(Platform.SubscribePlatformEvents, { + request: requestMessage, + host: this.serviceHost, + metadata: metadata, + transport: this.options.transport, + debug: this.options.debug, + onMessage: function (responseMessage) { + listeners.data.forEach(function (handler) { + handler(responseMessage); + }); + }, + onEnd: function (status, statusMessage, trailers) { + listeners.status.forEach(function (handler) { + handler({ code: status, details: statusMessage, metadata: trailers }); + }); + listeners.end.forEach(function (handler) { + handler({ code: status, details: statusMessage, metadata: trailers }); + }); + listeners = null; + } + }); + return { + on: function (type, handler) { + listeners[type].push(handler); + return this; + }, + cancel: function () { + listeners = null; + client.close(); + } + }; +}; + exports.PlatformClient = PlatformClient; From a326b8a60a21b0c53bacf29c1bffa02b5a11c774 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Thu, 23 Oct 2025 16:40:37 +0200 Subject: [PATCH 17/40] chore: improve platform_events example --- packages/rs-sdk/examples/platform_events.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/rs-sdk/examples/platform_events.rs b/packages/rs-sdk/examples/platform_events.rs index c364c6f8e25..70538d162c9 100644 --- a/packages/rs-sdk/examples/platform_events.rs +++ b/packages/rs-sdk/examples/platform_events.rs @@ -24,6 +24,7 @@ mod subscribe { use rs_dapi_client::{Address, AddressList}; use serde::Deserialize; use std::str::FromStr; + use tracing::info; use tracing_subscriber::EnvFilter; use zeroize::Zeroizing; @@ -112,7 +113,7 @@ mod subscribe { .await .expect("subscribe all"); - println!("Subscriptions created. Waiting for events... (Ctrl+C to exit)"); + info!("Subscriptions created. Waiting for events... (Ctrl+C to exit)"); let block_worker = tokio::spawn(worker(block_stream, "BlockCommitted")); let str_worker = tokio::spawn(worker(str_stream, "StateTransitionResult")); @@ -124,7 +125,7 @@ mod subscribe { let abort_all = all_worker.abort_handle(); tokio::spawn(async move { tokio::signal::ctrl_c().await.ok(); - println!("Ctrl+C received, stopping..."); + info!("Ctrl+C received, stopping..."); abort_block.abort(); abort_str.abort(); abort_all.abort(); @@ -145,8 +146,8 @@ mod subscribe { match event { PlatformEvent::BlockCommitted(bc) => { if let Some(meta) = bc.meta { - println!( - "{label}: id={sub_id} height={} time_ms={} tx_count={} block_id_hash=0x{}", + info!( + "{label}: sub_id={sub_id} height={} time_ms={} tx_count={} block_id_hash=0x{}", meta.height, meta.time_ms, bc.tx_count, From 3e256585d361c35c6f5edf09ab15463288d14801 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Thu, 23 Oct 2025 16:41:14 +0200 Subject: [PATCH 18/40] fix(dashmate): dashmate restart --platform should restart rs-dapi and envoy --- .../src/listr/tasks/startNodeTaskFactory.js | 23 +++++++++++------- .../src/listr/tasks/stopNodeTaskFactory.js | 24 ++++++++++++------- 2 files changed, 31 insertions(+), 16 deletions(-) diff --git a/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js b/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js index ed72b6bfaf6..a77ac0fae19 100644 --- a/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/startNodeTaskFactory.js @@ -14,6 +14,7 @@ import isServiceBuildRequired from '../../util/isServiceBuildRequired.js'; * @param {getConnectionHost} getConnectionHost * @param {ensureFileMountExists} ensureFileMountExists * @param {HomeDir} homeDir + * @param {getConfigProfiles} getConfigProfiles * @return {startNodeTask} */ export default function startNodeTaskFactory( @@ -25,7 +26,19 @@ export default function startNodeTaskFactory( getConnectionHost, ensureFileMountExists, homeDir, + getConfigProfiles, ) { + function getPlatformProfiles(config) { + const platformProfiles = getConfigProfiles(config) + .filter((profile) => profile.startsWith('platform')); + + if (platformProfiles.length === 0) { + platformProfiles.push('platform'); + } + + return Array.from(new Set(platformProfiles)); + } + /** * @typedef {startNodeTask} * @param {Config} config @@ -84,10 +97,7 @@ export default function startNodeTaskFactory( title: 'Check node is not started', enabled: (ctx) => !ctx.isForce, task: async (ctx) => { - const profiles = []; - if (ctx.platformOnly) { - profiles.push('platform'); - } + const profiles = ctx.platformOnly ? getPlatformProfiles(config) : []; if (await dockerCompose.isNodeRunning(config, { profiles })) { throw new Error('Running services detected. Please ensure all services are stopped for this config before starting'); @@ -117,10 +127,7 @@ export default function startNodeTaskFactory( config.get('core.masternode.operator.privateKey', true); } - const profiles = []; - if (ctx.platformOnly) { - profiles.push('platform'); - } + const profiles = ctx.platformOnly ? getPlatformProfiles(config) : []; await dockerCompose.up(config, { profiles }); }, diff --git a/packages/dashmate/src/listr/tasks/stopNodeTaskFactory.js b/packages/dashmate/src/listr/tasks/stopNodeTaskFactory.js index 1d3de2707c0..264aac6dd92 100644 --- a/packages/dashmate/src/listr/tasks/stopNodeTaskFactory.js +++ b/packages/dashmate/src/listr/tasks/stopNodeTaskFactory.js @@ -7,13 +7,26 @@ import waitForDKGWindowPass from '../../core/quorum/waitForDKGWindowPass.js'; * @param {DockerCompose} dockerCompose * @param {createRpcClient} createRpcClient * @param {getConnectionHost} getConnectionHost + * @param {getConfigProfiles} getConfigProfiles * @return {stopNodeTask} */ export default function stopNodeTaskFactory( dockerCompose, createRpcClient, getConnectionHost, + getConfigProfiles, ) { + function getPlatformProfiles(config) { + const platformProfiles = getConfigProfiles(config) + .filter((profile) => profile.startsWith('platform')); + + if (platformProfiles.length === 0) { + platformProfiles.push('platform'); + } + + return Array.from(new Set(platformProfiles)); + } + /** * Stop node * @typedef stopNodeTask @@ -27,10 +40,7 @@ export default function stopNodeTaskFactory( title: 'Check node is running', skip: (ctx) => ctx.isForce, task: async (ctx) => { - const profiles = []; - if (ctx.platformOnly) { - profiles.push('platform'); - } + const profiles = ctx.platformOnly ? getPlatformProfiles(config) : []; if (!await dockerCompose.isNodeRunning(config, { profiles })) { throw new Error('Node is not running'); @@ -70,10 +80,8 @@ export default function stopNodeTaskFactory( { title: `Stopping ${config.getName()} node`, task: async (ctx) => { - const profiles = []; - if (ctx.platformOnly) { - profiles.push('platform'); - } + const profiles = ctx.platformOnly ? getPlatformProfiles(config) : []; + await dockerCompose.stop(config, { profiles }); }, }, From 66a756d9fc3ef3d7d57a272e1e0d52d9679c0989 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Fri, 24 Oct 2025 13:52:39 +0200 Subject: [PATCH 19/40] feat(rs-dapi): keepalives for event stream --- .../protos/platform/v0/platform.proto | 6 ++ .../templates/platform/gateway/envoy.yaml.dot | 6 +- packages/rs-dapi/src/server/grpc.rs | 2 +- packages/rs-drive-abci/src/query/service.rs | 94 ++++++++++++++++--- packages/rs-sdk/examples/platform_events.rs | 5 +- packages/rs-sdk/src/platform/events.rs | 5 + .../rs-sdk/tests/fetch/platform_events.rs | 1 + 7 files changed, 101 insertions(+), 18 deletions(-) diff --git a/packages/dapi-grpc/protos/platform/v0/platform.proto b/packages/dapi-grpc/protos/platform/v0/platform.proto index 1af5a7f65e1..2d3ed910c0a 100644 --- a/packages/dapi-grpc/protos/platform/v0/platform.proto +++ b/packages/dapi-grpc/protos/platform/v0/platform.proto @@ -10,6 +10,9 @@ import "google/protobuf/timestamp.proto"; message PlatformSubscriptionRequest { message PlatformSubscriptionRequestV0 { PlatformFilterV0 filter = 1; + // Interval in seconds between keepalive events (min 25, max 300, 0 disables + // keepalive). + uint32 keepalive = 2; } oneof version { PlatformSubscriptionRequestV0 v0 = 1; } } @@ -56,9 +59,12 @@ message PlatformEventV0 { bytes tx_hash = 2; } + message Keepalive {} + oneof event { BlockCommitted block_committed = 1; StateTransitionFinalized state_transition_finalized = 2; + Keepalive keepalive = 3; } } diff --git a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot index d9ed94f3265..f09aa21f6b0 100644 --- a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot +++ b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot @@ -221,13 +221,13 @@ path: "/org.dash.platform.dapi.v0.Platform/SubscribePlatformEvents" route: cluster: rs_dapi - idle_timeout: 300s + idle_timeout: 305s # Upstream response timeout timeout: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} max_stream_duration: # Entire stream/request timeout - max_stream_duration: 3605s - grpc_timeout_header_max: 3600s + max_stream_duration: 605s + grpc_timeout_header_max: 300s # rs-dapi waitForStateTransitionResult endpoint with bigger timeout (now exposed directly) - match: path: "/org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult" diff --git a/packages/rs-dapi/src/server/grpc.rs b/packages/rs-dapi/src/server/grpc.rs index 0bc5b5503e4..3e789aad7a0 100644 --- a/packages/rs-dapi/src/server/grpc.rs +++ b/packages/rs-dapi/src/server/grpc.rs @@ -107,7 +107,7 @@ impl TimeoutLayer { "/org.dash.platform.dapi.v0.Core/subscribeToTransactionsWithProofs", "/org.dash.platform.dapi.v0.Core/subscribeToMasternodeList", "/org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult", - "/org.dash.platform.dapi.v0.Platform/subscribePlatformEvents", + "/org.dash.platform.dapi.v0.Platform/SubscribePlatformEvents", ]; // Check if this is a known streaming method diff --git a/packages/rs-drive-abci/src/query/service.rs b/packages/rs-drive-abci/src/query/service.rs index bf48b552cd9..8c925a31f87 100644 --- a/packages/rs-drive-abci/src/query/service.rs +++ b/packages/rs-drive-abci/src/query/service.rs @@ -10,6 +10,7 @@ use crate::utils::spawn_blocking_task_with_name_if_supported; use async_trait::async_trait; use dapi_grpc::drive::v0::drive_internal_server::DriveInternal; use dapi_grpc::drive::v0::{GetProofsRequest, GetProofsResponse}; +use dapi_grpc::platform::v0::platform_event_v0::Keepalive; use dapi_grpc::platform::v0::platform_server::Platform as PlatformService; use dapi_grpc::platform::v0::{ BroadcastStateTransitionRequest, BroadcastStateTransitionResponse, GetConsensusParamsRequest, @@ -54,7 +55,7 @@ use dapi_grpc::tonic::{Code, Request, Response, Status}; use dash_event_bus::event_bus::{EventBus, Filter as EventBusFilter}; use dpp::version::PlatformVersion; use std::fmt::Debug; -use std::sync::atomic::{AtomicU64, Ordering}; +use std::sync::atomic::Ordering; use std::sync::{Arc, Mutex}; use std::thread::sleep; use std::time::Duration; @@ -294,6 +295,9 @@ impl EventBusFilter for PlatformFilterAdapter { fn matches(&self, event: &PlatformEvent) -> bool { use dapi_grpc::platform::v0::platform_event_v0::Event as Evt; use dapi_grpc::platform::v0::platform_filter_v0::Kind; + if matches!(event.event, Some(Evt::Keepalive(_))) { + return true; + } match self.inner.kind.as_ref() { None => false, Some(Kind::All(all)) => *all, @@ -890,11 +894,27 @@ impl PlatformService for QueryService { } }; + let keepalive = req_v0.keepalive; let filter = req_v0.filter.unwrap_or_default(); if filter.kind.is_none() { tracing::warn!("subscribe_platform_events: filter kind is not specified"); return Err(Status::invalid_argument("filter kind is not specified")); } + + let keepalive_duration = if keepalive == 0 { + None + } else if keepalive < 25 || keepalive > 300 { + tracing::warn!( + interval = keepalive, + "subscribe_platform_events: keepalive interval out of range" + ); + return Err(Status::invalid_argument( + "keepalive interval must be between 25 and 300 seconds", + )); + } else { + Some(Duration::from_secs(keepalive as u64)) + }; + let subscription_id = format!("{:X}", rand::random::()); tracing::trace!( subscription_id = %subscription_id, @@ -932,22 +952,70 @@ impl PlatformService for QueryService { let worker = tokio::task::spawn(async move { let handle = subscription; - while let Some(event) = handle.recv().await { - let response = PlatformSubscriptionResponse { - version: Some(ResponseVersion::V0(PlatformSubscriptionResponseV0 { - client_subscription_id: subscription_id.clone(), - event: Some(event), - })), + + loop { + // next_item is Some(Ok(event)) when an event is received + // next_item is Some(Err(e)) when keepalive timeout elapses + // next_item is None when the stream is closed + let next_item = if let Some(duration) = keepalive_duration { + match tokio::time::timeout(duration, handle.recv()).await { + Ok(Some(event)) => Some(Ok(event)), + Ok(None) => None, + Err(e) => Some(Err(e)), + } + } else { + match handle.recv().await { + Some(event) => Some(Ok(event)), + None => None, + } }; - if downstream_tx.send(Ok(response)).await.is_err() { - tracing::debug!( - subscription_id = %subscription_id, - "subscribe_platform_events: client stream closed" - ); - break; + match next_item { + Some(Ok(event)) => { + let response = PlatformSubscriptionResponse { + version: Some(ResponseVersion::V0(PlatformSubscriptionResponseV0 { + client_subscription_id: subscription_id.clone(), + event: Some(event), + })), + }; + + if downstream_tx.send(Ok(response)).await.is_err() { + tracing::debug!( + subscription_id = %subscription_id, + "subscribe_platform_events: client stream closed" + ); + break; + } + } + Some(Err(_)) => { + // timeout elapsed, emit keepalive event + let keepalive_event = PlatformEvent { + event: Some( + dapi_grpc::platform::v0::platform_event_v0::Event::Keepalive( + Keepalive {}, + ), + ), + }; + + let response = PlatformSubscriptionResponse { + version: Some(ResponseVersion::V0(PlatformSubscriptionResponseV0 { + client_subscription_id: subscription_id.clone(), + event: Some(keepalive_event), + })), + }; + + if downstream_tx.send(Ok(response)).await.is_err() { + tracing::debug!( + subscription_id = %subscription_id, + "subscribe_platform_events: client stream closed" + ); + break; + } + } + None => break, } } + tracing::debug!( subscription_id = %subscription_id, "subscribe_platform_events: event stream completed" diff --git a/packages/rs-sdk/examples/platform_events.rs b/packages/rs-sdk/examples/platform_events.rs index 70538d162c9..ee7219719fe 100644 --- a/packages/rs-sdk/examples/platform_events.rs +++ b/packages/rs-sdk/examples/platform_events.rs @@ -147,7 +147,7 @@ mod subscribe { PlatformEvent::BlockCommitted(bc) => { if let Some(meta) = bc.meta { info!( - "{label}: sub_id={sub_id} height={} time_ms={} tx_count={} block_id_hash=0x{}", + "{label}: id={sub_id} height={} time_ms={} tx_count={} block_id_hash=0x{}", meta.height, meta.time_ms, bc.tx_count, @@ -165,6 +165,9 @@ mod subscribe { ); } } + PlatformEvent::Keepalive(_) => { + info!("{label}: id={sub_id} keepalive"); + } } } } diff --git a/packages/rs-sdk/src/platform/events.rs b/packages/rs-sdk/src/platform/events.rs index 9a927297a25..b0837246e06 100644 --- a/packages/rs-sdk/src/platform/events.rs +++ b/packages/rs-sdk/src/platform/events.rs @@ -41,9 +41,14 @@ impl crate::Sdk { .map_err(|e| crate::Error::SubscriptionError(format!("channel: {e}")))?; let mut client: PlatformGrpcClient = PlatformClient::new(channel); + // Keepalive should be less than the timeout to avoid unintentional disconnects. + let keepalive = (settings.timeout - Duration::from_secs(5)) + .as_secs() + .clamp(25, 300) as u32; let request = PlatformSubscriptionRequest { version: Some(RequestVersion::V0(PlatformSubscriptionRequestV0 { filter: Some(filter), + keepalive, })), }; diff --git a/packages/rs-sdk/tests/fetch/platform_events.rs b/packages/rs-sdk/tests/fetch/platform_events.rs index bb06f201909..c98e4300f29 100644 --- a/packages/rs-sdk/tests/fetch/platform_events.rs +++ b/packages/rs-sdk/tests/fetch/platform_events.rs @@ -36,6 +36,7 @@ async fn test_platform_events_subscribe_stream_opens() { filter: Some(PlatformFilterV0 { kind: Some(dapi_grpc::platform::v0::platform_filter_v0::Kind::All(true)), }), + keepalive: 25, })), }; From 7c8162904744303ccf0af46aad2d4425c27efe74 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Fri, 24 Oct 2025 13:53:03 +0200 Subject: [PATCH 20/40] chore(dapi-grpc): update protobuf clients --- .../clients/drive/v0/nodejs/drive_pbjs.js | 223 ++- .../platform/v0/nodejs/platform_pbjs.js | 223 ++- .../platform/v0/nodejs/platform_protoc.js | 213 ++- .../platform/v0/objective-c/Platform.pbobjc.h | 18 + .../platform/v0/objective-c/Platform.pbobjc.m | 56 + .../platform/v0/python/platform_pb2.py | 1343 +++++++++-------- .../clients/platform/v0/web/platform_pb.d.ts | 27 + .../clients/platform/v0/web/platform_pb.js | 213 ++- packages/rs-sdk/examples/platform_events.rs | 16 +- 9 files changed, 1669 insertions(+), 663 deletions(-) diff --git a/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js b/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js index e6dca9b7e5d..e280f66e20a 100644 --- a/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js +++ b/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js @@ -777,6 +777,7 @@ $root.org = (function() { * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest * @interface IPlatformSubscriptionRequestV0 * @property {org.dash.platform.dapi.v0.IPlatformFilterV0|null} [filter] PlatformSubscriptionRequestV0 filter + * @property {number|null} [keepalive] PlatformSubscriptionRequestV0 keepalive */ /** @@ -802,6 +803,14 @@ $root.org = (function() { */ PlatformSubscriptionRequestV0.prototype.filter = null; + /** + * PlatformSubscriptionRequestV0 keepalive. + * @member {number} keepalive + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @instance + */ + PlatformSubscriptionRequestV0.prototype.keepalive = 0; + /** * Creates a new PlatformSubscriptionRequestV0 instance using the specified properties. * @function create @@ -828,6 +837,8 @@ $root.org = (function() { writer = $Writer.create(); if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) $root.org.dash.platform.dapi.v0.PlatformFilterV0.encode(message.filter, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.keepalive != null && Object.hasOwnProperty.call(message, "keepalive")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.keepalive); return writer; }; @@ -865,6 +876,9 @@ $root.org = (function() { case 1: message.filter = $root.org.dash.platform.dapi.v0.PlatformFilterV0.decode(reader, reader.uint32()); break; + case 2: + message.keepalive = reader.uint32(); + break; default: reader.skipType(tag & 7); break; @@ -905,6 +919,9 @@ $root.org = (function() { if (error) return "filter." + error; } + if (message.keepalive != null && message.hasOwnProperty("keepalive")) + if (!$util.isInteger(message.keepalive)) + return "keepalive: integer expected"; return null; }; @@ -925,6 +942,8 @@ $root.org = (function() { throw TypeError(".org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.filter: object expected"); message.filter = $root.org.dash.platform.dapi.v0.PlatformFilterV0.fromObject(object.filter); } + if (object.keepalive != null) + message.keepalive = object.keepalive >>> 0; return message; }; @@ -941,10 +960,14 @@ $root.org = (function() { if (!options) options = {}; var object = {}; - if (options.defaults) + if (options.defaults) { object.filter = null; + object.keepalive = 0; + } if (message.filter != null && message.hasOwnProperty("filter")) object.filter = $root.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(message.filter, options); + if (message.keepalive != null && message.hasOwnProperty("keepalive")) + object.keepalive = message.keepalive; return object; }; @@ -1862,6 +1885,7 @@ $root.org = (function() { * @interface IPlatformEventV0 * @property {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted|null} [blockCommitted] PlatformEventV0 blockCommitted * @property {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized|null} [stateTransitionFinalized] PlatformEventV0 stateTransitionFinalized + * @property {org.dash.platform.dapi.v0.PlatformEventV0.IKeepalive|null} [keepalive] PlatformEventV0 keepalive */ /** @@ -1895,17 +1919,25 @@ $root.org = (function() { */ PlatformEventV0.prototype.stateTransitionFinalized = null; + /** + * PlatformEventV0 keepalive. + * @member {org.dash.platform.dapi.v0.PlatformEventV0.IKeepalive|null|undefined} keepalive + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @instance + */ + PlatformEventV0.prototype.keepalive = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; /** * PlatformEventV0 event. - * @member {"blockCommitted"|"stateTransitionFinalized"|undefined} event + * @member {"blockCommitted"|"stateTransitionFinalized"|"keepalive"|undefined} event * @memberof org.dash.platform.dapi.v0.PlatformEventV0 * @instance */ Object.defineProperty(PlatformEventV0.prototype, "event", { - get: $util.oneOfGetter($oneOfFields = ["blockCommitted", "stateTransitionFinalized"]), + get: $util.oneOfGetter($oneOfFields = ["blockCommitted", "stateTransitionFinalized", "keepalive"]), set: $util.oneOfSetter($oneOfFields) }); @@ -1937,6 +1969,8 @@ $root.org = (function() { $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.encode(message.blockCommitted, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.stateTransitionFinalized != null && Object.hasOwnProperty.call(message, "stateTransitionFinalized")) $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.encode(message.stateTransitionFinalized, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.keepalive != null && Object.hasOwnProperty.call(message, "keepalive")) + $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.encode(message.keepalive, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -1977,6 +2011,9 @@ $root.org = (function() { case 2: message.stateTransitionFinalized = $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.decode(reader, reader.uint32()); break; + case 3: + message.keepalive = $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -2031,6 +2068,16 @@ $root.org = (function() { return "stateTransitionFinalized." + error; } } + if (message.keepalive != null && message.hasOwnProperty("keepalive")) { + if (properties.event === 1) + return "event: multiple values"; + properties.event = 1; + { + var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.verify(message.keepalive); + if (error) + return "keepalive." + error; + } + } return null; }; @@ -2056,6 +2103,11 @@ $root.org = (function() { throw TypeError(".org.dash.platform.dapi.v0.PlatformEventV0.stateTransitionFinalized: object expected"); message.stateTransitionFinalized = $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.fromObject(object.stateTransitionFinalized); } + if (object.keepalive != null) { + if (typeof object.keepalive !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformEventV0.keepalive: object expected"); + message.keepalive = $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.fromObject(object.keepalive); + } return message; }; @@ -2082,6 +2134,11 @@ $root.org = (function() { if (options.oneofs) object.event = "stateTransitionFinalized"; } + if (message.keepalive != null && message.hasOwnProperty("keepalive")) { + object.keepalive = $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.toObject(message.keepalive, options); + if (options.oneofs) + object.event = "keepalive"; + } return object; }; @@ -2804,6 +2861,166 @@ $root.org = (function() { return StateTransitionFinalized; })(); + PlatformEventV0.Keepalive = (function() { + + /** + * Properties of a Keepalive. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @interface IKeepalive + */ + + /** + * Constructs a new Keepalive. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @classdesc Represents a Keepalive. + * @implements IKeepalive + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IKeepalive=} [properties] Properties to set + */ + function Keepalive(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new Keepalive instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IKeepalive=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} Keepalive instance + */ + Keepalive.create = function create(properties) { + return new Keepalive(properties); + }; + + /** + * Encodes the specified Keepalive message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IKeepalive} message Keepalive message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Keepalive.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified Keepalive message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IKeepalive} message Keepalive message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Keepalive.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Keepalive message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} Keepalive + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Keepalive.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Keepalive message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} Keepalive + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Keepalive.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Keepalive message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Keepalive.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a Keepalive message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} Keepalive + */ + Keepalive.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive) + return object; + return new $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive(); + }; + + /** + * Creates a plain object from a Keepalive message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} message Keepalive + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Keepalive.toObject = function toObject() { + return {}; + }; + + /** + * Converts this Keepalive to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @instance + * @returns {Object.} JSON object + */ + Keepalive.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Keepalive; + })(); + return PlatformEventV0; })(); diff --git a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js index 2a5d259aa75..5aab0bc9a8b 100644 --- a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js +++ b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js @@ -269,6 +269,7 @@ $root.org = (function() { * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest * @interface IPlatformSubscriptionRequestV0 * @property {org.dash.platform.dapi.v0.IPlatformFilterV0|null} [filter] PlatformSubscriptionRequestV0 filter + * @property {number|null} [keepalive] PlatformSubscriptionRequestV0 keepalive */ /** @@ -294,6 +295,14 @@ $root.org = (function() { */ PlatformSubscriptionRequestV0.prototype.filter = null; + /** + * PlatformSubscriptionRequestV0 keepalive. + * @member {number} keepalive + * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0 + * @instance + */ + PlatformSubscriptionRequestV0.prototype.keepalive = 0; + /** * Creates a new PlatformSubscriptionRequestV0 instance using the specified properties. * @function create @@ -320,6 +329,8 @@ $root.org = (function() { writer = $Writer.create(); if (message.filter != null && Object.hasOwnProperty.call(message, "filter")) $root.org.dash.platform.dapi.v0.PlatformFilterV0.encode(message.filter, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); + if (message.keepalive != null && Object.hasOwnProperty.call(message, "keepalive")) + writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.keepalive); return writer; }; @@ -357,6 +368,9 @@ $root.org = (function() { case 1: message.filter = $root.org.dash.platform.dapi.v0.PlatformFilterV0.decode(reader, reader.uint32()); break; + case 2: + message.keepalive = reader.uint32(); + break; default: reader.skipType(tag & 7); break; @@ -397,6 +411,9 @@ $root.org = (function() { if (error) return "filter." + error; } + if (message.keepalive != null && message.hasOwnProperty("keepalive")) + if (!$util.isInteger(message.keepalive)) + return "keepalive: integer expected"; return null; }; @@ -417,6 +434,8 @@ $root.org = (function() { throw TypeError(".org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.filter: object expected"); message.filter = $root.org.dash.platform.dapi.v0.PlatformFilterV0.fromObject(object.filter); } + if (object.keepalive != null) + message.keepalive = object.keepalive >>> 0; return message; }; @@ -433,10 +452,14 @@ $root.org = (function() { if (!options) options = {}; var object = {}; - if (options.defaults) + if (options.defaults) { object.filter = null; + object.keepalive = 0; + } if (message.filter != null && message.hasOwnProperty("filter")) object.filter = $root.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(message.filter, options); + if (message.keepalive != null && message.hasOwnProperty("keepalive")) + object.keepalive = message.keepalive; return object; }; @@ -1354,6 +1377,7 @@ $root.org = (function() { * @interface IPlatformEventV0 * @property {org.dash.platform.dapi.v0.PlatformEventV0.IBlockCommitted|null} [blockCommitted] PlatformEventV0 blockCommitted * @property {org.dash.platform.dapi.v0.PlatformEventV0.IStateTransitionFinalized|null} [stateTransitionFinalized] PlatformEventV0 stateTransitionFinalized + * @property {org.dash.platform.dapi.v0.PlatformEventV0.IKeepalive|null} [keepalive] PlatformEventV0 keepalive */ /** @@ -1387,17 +1411,25 @@ $root.org = (function() { */ PlatformEventV0.prototype.stateTransitionFinalized = null; + /** + * PlatformEventV0 keepalive. + * @member {org.dash.platform.dapi.v0.PlatformEventV0.IKeepalive|null|undefined} keepalive + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @instance + */ + PlatformEventV0.prototype.keepalive = null; + // OneOf field names bound to virtual getters and setters var $oneOfFields; /** * PlatformEventV0 event. - * @member {"blockCommitted"|"stateTransitionFinalized"|undefined} event + * @member {"blockCommitted"|"stateTransitionFinalized"|"keepalive"|undefined} event * @memberof org.dash.platform.dapi.v0.PlatformEventV0 * @instance */ Object.defineProperty(PlatformEventV0.prototype, "event", { - get: $util.oneOfGetter($oneOfFields = ["blockCommitted", "stateTransitionFinalized"]), + get: $util.oneOfGetter($oneOfFields = ["blockCommitted", "stateTransitionFinalized", "keepalive"]), set: $util.oneOfSetter($oneOfFields) }); @@ -1429,6 +1461,8 @@ $root.org = (function() { $root.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.encode(message.blockCommitted, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.stateTransitionFinalized != null && Object.hasOwnProperty.call(message, "stateTransitionFinalized")) $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.encode(message.stateTransitionFinalized, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); + if (message.keepalive != null && Object.hasOwnProperty.call(message, "keepalive")) + $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.encode(message.keepalive, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -1469,6 +1503,9 @@ $root.org = (function() { case 2: message.stateTransitionFinalized = $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.decode(reader, reader.uint32()); break; + case 3: + message.keepalive = $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.decode(reader, reader.uint32()); + break; default: reader.skipType(tag & 7); break; @@ -1523,6 +1560,16 @@ $root.org = (function() { return "stateTransitionFinalized." + error; } } + if (message.keepalive != null && message.hasOwnProperty("keepalive")) { + if (properties.event === 1) + return "event: multiple values"; + properties.event = 1; + { + var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.verify(message.keepalive); + if (error) + return "keepalive." + error; + } + } return null; }; @@ -1548,6 +1595,11 @@ $root.org = (function() { throw TypeError(".org.dash.platform.dapi.v0.PlatformEventV0.stateTransitionFinalized: object expected"); message.stateTransitionFinalized = $root.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.fromObject(object.stateTransitionFinalized); } + if (object.keepalive != null) { + if (typeof object.keepalive !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformEventV0.keepalive: object expected"); + message.keepalive = $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.fromObject(object.keepalive); + } return message; }; @@ -1574,6 +1626,11 @@ $root.org = (function() { if (options.oneofs) object.event = "stateTransitionFinalized"; } + if (message.keepalive != null && message.hasOwnProperty("keepalive")) { + object.keepalive = $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.toObject(message.keepalive, options); + if (options.oneofs) + object.event = "keepalive"; + } return object; }; @@ -2296,6 +2353,166 @@ $root.org = (function() { return StateTransitionFinalized; })(); + PlatformEventV0.Keepalive = (function() { + + /** + * Properties of a Keepalive. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @interface IKeepalive + */ + + /** + * Constructs a new Keepalive. + * @memberof org.dash.platform.dapi.v0.PlatformEventV0 + * @classdesc Represents a Keepalive. + * @implements IKeepalive + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IKeepalive=} [properties] Properties to set + */ + function Keepalive(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new Keepalive instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IKeepalive=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} Keepalive instance + */ + Keepalive.create = function create(properties) { + return new Keepalive(properties); + }; + + /** + * Encodes the specified Keepalive message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IKeepalive} message Keepalive message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Keepalive.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified Keepalive message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.IKeepalive} message Keepalive message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + Keepalive.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a Keepalive message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} Keepalive + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Keepalive.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a Keepalive message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} Keepalive + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + Keepalive.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a Keepalive message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + Keepalive.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a Keepalive message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} Keepalive + */ + Keepalive.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive) + return object; + return new $root.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive(); + }; + + /** + * Creates a plain object from a Keepalive message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @static + * @param {org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} message Keepalive + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + Keepalive.toObject = function toObject() { + return {}; + }; + + /** + * Converts this Keepalive to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformEventV0.Keepalive + * @instance + * @returns {Object.} JSON object + */ + Keepalive.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return Keepalive; + })(); + return PlatformEventV0; })(); diff --git a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js index 6a1b88ed549..492c61fa28a 100644 --- a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js +++ b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js @@ -464,6 +464,7 @@ goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0', null, { pro goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase', null, { proto }); @@ -698,6 +699,27 @@ if (goog.DEBUG && !COMPILED) { */ proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.displayName = 'proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.displayName = 'proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -7211,7 +7233,8 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscription */ proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.toObject = function(includeInstance, msg) { var f, obj = { - filter: (f = msg.getFilter()) && proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(includeInstance, f) + filter: (f = msg.getFilter()) && proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(includeInstance, f), + keepalive: jspb.Message.getFieldWithDefault(msg, 2, 0) }; if (includeInstance) { @@ -7253,6 +7276,10 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscription reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader); msg.setFilter(value); break; + case 2: + var value = /** @type {number} */ (reader.readUint32()); + msg.setKeepalive(value); + break; default: reader.skipField(); break; @@ -7290,6 +7317,13 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscription proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter ); } + f = message.getKeepalive(); + if (f !== 0) { + writer.writeUint32( + 2, + f + ); + } }; @@ -7330,6 +7364,24 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscription }; +/** + * optional uint32 keepalive = 2; + * @return {number} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.getKeepalive = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.setKeepalive = function(value) { + return jspb.Message.setProto3IntField(this, 2, value); +}; + + /** * optional PlatformSubscriptionRequestV0 v0 = 1; * @return {?proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} @@ -8179,7 +8231,7 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.hasStateTransitionRes * @private {!Array>} * @const */ -proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_ = [[1,2]]; +proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_ = [[1,2,3]]; /** * @enum {number} @@ -8187,7 +8239,8 @@ proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_ = [[1,2]]; proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase = { EVENT_NOT_SET: 0, BLOCK_COMMITTED: 1, - STATE_TRANSITION_FINALIZED: 2 + STATE_TRANSITION_FINALIZED: 2, + KEEPALIVE: 3 }; /** @@ -8229,7 +8282,8 @@ proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.toObject = function(op proto.org.dash.platform.dapi.v0.PlatformEventV0.toObject = function(includeInstance, msg) { var f, obj = { blockCommitted: (f = msg.getBlockCommitted()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.toObject(includeInstance, f), - stateTransitionFinalized: (f = msg.getStateTransitionFinalized()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.toObject(includeInstance, f) + stateTransitionFinalized: (f = msg.getStateTransitionFinalized()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.toObject(includeInstance, f), + keepalive: (f = msg.getKeepalive()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.toObject(includeInstance, f) }; if (includeInstance) { @@ -8276,6 +8330,11 @@ proto.org.dash.platform.dapi.v0.PlatformEventV0.deserializeBinaryFromReader = fu reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.deserializeBinaryFromReader); msg.setStateTransitionFinalized(value); break; + case 3: + var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.deserializeBinaryFromReader); + msg.setKeepalive(value); + break; default: reader.skipField(); break; @@ -8321,6 +8380,14 @@ proto.org.dash.platform.dapi.v0.PlatformEventV0.serializeBinaryToWriter = functi proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.serializeBinaryToWriter ); } + f = message.getKeepalive(); + if (f != null) { + writer.writeMessage( + 3, + f, + proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.serializeBinaryToWriter + ); + } }; @@ -8924,6 +8991,107 @@ proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototy }; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive; + return proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.serializeBinaryToWriter = function(message, writer) { + var f = undefined; +}; + + /** * optional BlockCommitted block_committed = 1; * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} @@ -8998,6 +9166,43 @@ proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.hasStateTransitionFina }; +/** + * optional Keepalive keepalive = 3; + * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.getKeepalive = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive, 3)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.setKeepalive = function(value) { + return jspb.Message.setOneofWrapperField(this, 3, proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.clearKeepalive = function() { + return this.setKeepalive(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.hasKeepalive = function() { + return jspb.Message.getField(this, 3) != null; +}; + + diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h index 225dd6708ba..795bab5c7b8 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h @@ -231,6 +231,7 @@ CF_EXTERN_C_BEGIN @class PlatformEventV0; @class PlatformEventV0_BlockCommitted; @class PlatformEventV0_BlockMetadata; +@class PlatformEventV0_Keepalive; @class PlatformEventV0_StateTransitionFinalized; @class PlatformFilterV0; @class PlatformSubscriptionRequest_PlatformSubscriptionRequestV0; @@ -480,6 +481,7 @@ void PlatformSubscriptionRequest_ClearVersionOneOfCase(PlatformSubscriptionReque typedef GPB_ENUM(PlatformSubscriptionRequest_PlatformSubscriptionRequestV0_FieldNumber) { PlatformSubscriptionRequest_PlatformSubscriptionRequestV0_FieldNumber_Filter = 1, + PlatformSubscriptionRequest_PlatformSubscriptionRequestV0_FieldNumber_Keepalive = 2, }; GPB_FINAL @interface PlatformSubscriptionRequest_PlatformSubscriptionRequestV0 : GPBMessage @@ -488,6 +490,12 @@ GPB_FINAL @interface PlatformSubscriptionRequest_PlatformSubscriptionRequestV0 : /** Test to see if @c filter has been set. */ @property(nonatomic, readwrite) BOOL hasFilter; +/** + * Interval in seconds between keepalive events (min 25, max 300, 0 disables + * keepalive). + **/ +@property(nonatomic, readwrite) uint32_t keepalive; + @end #pragma mark - PlatformSubscriptionResponse @@ -590,12 +598,14 @@ void PlatformFilterV0_ClearKindOneOfCase(PlatformFilterV0 *message); typedef GPB_ENUM(PlatformEventV0_FieldNumber) { PlatformEventV0_FieldNumber_BlockCommitted = 1, PlatformEventV0_FieldNumber_StateTransitionFinalized = 2, + PlatformEventV0_FieldNumber_Keepalive = 3, }; typedef GPB_ENUM(PlatformEventV0_Event_OneOfCase) { PlatformEventV0_Event_OneOfCase_GPBUnsetOneOfCase = 0, PlatformEventV0_Event_OneOfCase_BlockCommitted = 1, PlatformEventV0_Event_OneOfCase_StateTransitionFinalized = 2, + PlatformEventV0_Event_OneOfCase_Keepalive = 3, }; GPB_FINAL @interface PlatformEventV0 : GPBMessage @@ -606,6 +616,8 @@ GPB_FINAL @interface PlatformEventV0 : GPBMessage @property(nonatomic, readwrite, strong, null_resettable) PlatformEventV0_StateTransitionFinalized *stateTransitionFinalized; +@property(nonatomic, readwrite, strong, null_resettable) PlatformEventV0_Keepalive *keepalive; + @end /** @@ -665,6 +677,12 @@ GPB_FINAL @interface PlatformEventV0_StateTransitionFinalized : GPBMessage @end +#pragma mark - PlatformEventV0_Keepalive + +GPB_FINAL @interface PlatformEventV0_Keepalive : GPBMessage + +@end + #pragma mark - Proof typedef GPB_ENUM(Proof_FieldNumber) { diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m index 1391e171333..9701cee0ae6 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m @@ -320,6 +320,7 @@ GPBObjCClassDeclaration(PlatformEventV0); GPBObjCClassDeclaration(PlatformEventV0_BlockCommitted); GPBObjCClassDeclaration(PlatformEventV0_BlockMetadata); +GPBObjCClassDeclaration(PlatformEventV0_Keepalive); GPBObjCClassDeclaration(PlatformEventV0_StateTransitionFinalized); GPBObjCClassDeclaration(PlatformFilterV0); GPBObjCClassDeclaration(PlatformSubscriptionRequest); @@ -465,9 +466,11 @@ void PlatformSubscriptionRequest_ClearVersionOneOfCase(PlatformSubscriptionReque @implementation PlatformSubscriptionRequest_PlatformSubscriptionRequestV0 @dynamic hasFilter, filter; +@dynamic keepalive; typedef struct PlatformSubscriptionRequest_PlatformSubscriptionRequestV0__storage_ { uint32_t _has_storage_[1]; + uint32_t keepalive; PlatformFilterV0 *filter; } PlatformSubscriptionRequest_PlatformSubscriptionRequestV0__storage_; @@ -486,6 +489,15 @@ + (GPBDescriptor *)descriptor { .flags = GPBFieldOptional, .dataType = GPBDataTypeMessage, }, + { + .name = "keepalive", + .dataTypeSpecific.clazz = Nil, + .number = PlatformSubscriptionRequest_PlatformSubscriptionRequestV0_FieldNumber_Keepalive, + .hasIndex = 1, + .offset = (uint32_t)offsetof(PlatformSubscriptionRequest_PlatformSubscriptionRequestV0__storage_, keepalive), + .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), + .dataType = GPBDataTypeUInt32, + }, }; GPBDescriptor *localDescriptor = [GPBDescriptor allocDescriptorForClass:[PlatformSubscriptionRequest_PlatformSubscriptionRequestV0 class] @@ -749,11 +761,13 @@ @implementation PlatformEventV0 @dynamic eventOneOfCase; @dynamic blockCommitted; @dynamic stateTransitionFinalized; +@dynamic keepalive; typedef struct PlatformEventV0__storage_ { uint32_t _has_storage_[2]; PlatformEventV0_BlockCommitted *blockCommitted; PlatformEventV0_StateTransitionFinalized *stateTransitionFinalized; + PlatformEventV0_Keepalive *keepalive; } PlatformEventV0__storage_; // This method is threadsafe because it is initially called @@ -780,6 +794,15 @@ + (GPBDescriptor *)descriptor { .flags = GPBFieldOptional, .dataType = GPBDataTypeMessage, }, + { + .name = "keepalive", + .dataTypeSpecific.clazz = GPBObjCClass(PlatformEventV0_Keepalive), + .number = PlatformEventV0_FieldNumber_Keepalive, + .hasIndex = -1, + .offset = (uint32_t)offsetof(PlatformEventV0__storage_, keepalive), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeMessage, + }, }; GPBDescriptor *localDescriptor = [GPBDescriptor allocDescriptorForClass:[PlatformEventV0 class] @@ -992,6 +1015,39 @@ + (GPBDescriptor *)descriptor { @end +#pragma mark - PlatformEventV0_Keepalive + +@implementation PlatformEventV0_Keepalive + + +typedef struct PlatformEventV0_Keepalive__storage_ { + uint32_t _has_storage_[1]; +} PlatformEventV0_Keepalive__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformEventV0_Keepalive class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:NULL + fieldCount:0 + storageSize:sizeof(PlatformEventV0_Keepalive__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + [localDescriptor setupContainingMessageClass:GPBObjCClass(PlatformEventV0)]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + #pragma mark - Proof @implementation Proof diff --git a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py index 603c2464474..4d3c2db6bc7 100644 --- a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py +++ b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py @@ -23,7 +23,7 @@ syntax='proto3', serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x0eplatform.proto\x12\x19org.dash.platform.dapi.v0\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xea\x01\n\x1bPlatformSubscriptionRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0H\x00\x1a\\\n\x1dPlatformSubscriptionRequestV0\x12;\n\x06\x66ilter\x18\x01 \x01(\x0b\x32+.org.dash.platform.dapi.v0.PlatformFilterV0B\t\n\x07version\"\x8c\x02\n\x1cPlatformSubscriptionResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0H\x00\x1a{\n\x1ePlatformSubscriptionResponseV0\x12\x1e\n\x16\x63lient_subscription_id\x18\x01 \x01(\t\x12\x39\n\x05\x65vent\x18\x02 \x01(\x0b\x32*.org.dash.platform.dapi.v0.PlatformEventV0B\t\n\x07version\"?\n\x1bStateTransitionResultFilter\x12\x14\n\x07tx_hash\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\n\n\x08_tx_hash\"\x9f\x01\n\x10PlatformFilterV0\x12\r\n\x03\x61ll\x18\x01 \x01(\x08H\x00\x12\x19\n\x0f\x62lock_committed\x18\x02 \x01(\x08H\x00\x12Y\n\x17state_transition_result\x18\x03 \x01(\x0b\x32\x36.org.dash.platform.dapi.v0.StateTransitionResultFilterH\x00\x42\x06\n\x04kind\"\x8d\x04\n\x0fPlatformEventV0\x12T\n\x0f\x62lock_committed\x18\x01 \x01(\x0b\x32\x39.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommittedH\x00\x12i\n\x1astate_transition_finalized\x18\x02 \x01(\x0b\x32\x43.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalizedH\x00\x1aO\n\rBlockMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x13\n\x07time_ms\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rblock_id_hash\x18\x03 \x01(\x0c\x1aj\n\x0e\x42lockCommitted\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x10\n\x08tx_count\x18\x02 \x01(\r\x1as\n\x18StateTransitionFinalized\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x0f\n\x07tx_hash\x18\x02 \x01(\x0c\x42\x07\n\x05\x65vent\"\x81\x01\n\x05Proof\x12\x15\n\rgrovedb_proof\x18\x01 \x01(\x0c\x12\x13\n\x0bquorum_hash\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\r\n\x05round\x18\x04 \x01(\r\x12\x15\n\rblock_id_hash\x18\x05 \x01(\x0c\x12\x13\n\x0bquorum_type\x18\x06 \x01(\r\"\x98\x01\n\x10ResponseMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12 \n\x18\x63ore_chain_locked_height\x18\x02 \x01(\r\x12\r\n\x05\x65poch\x18\x03 \x01(\r\x12\x13\n\x07time_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x18\n\x10protocol_version\x18\x05 \x01(\r\x12\x10\n\x08\x63hain_id\x18\x06 \x01(\t\"L\n\x1dStateTransitionBroadcastError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\";\n\x1f\x42roadcastStateTransitionRequest\x12\x18\n\x10state_transition\x18\x01 \x01(\x0c\"\"\n BroadcastStateTransitionResponse\"\xa4\x01\n\x12GetIdentityRequest\x12P\n\x02v0\x18\x01 \x01(\x0b\x32\x42.org.dash.platform.dapi.v0.GetIdentityRequest.GetIdentityRequestV0H\x00\x1a\x31\n\x14GetIdentityRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xc1\x01\n\x17GetIdentityNonceRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityNonceRequest.GetIdentityNonceRequestV0H\x00\x1a?\n\x19GetIdentityNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xf6\x01\n\x1fGetIdentityContractNonceRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest.GetIdentityContractNonceRequestV0H\x00\x1a\\\n!GetIdentityContractNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xc0\x01\n\x19GetIdentityBalanceRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetIdentityBalanceRequest.GetIdentityBalanceRequestV0H\x00\x1a\x38\n\x1bGetIdentityBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xec\x01\n$GetIdentityBalanceAndRevisionRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest.GetIdentityBalanceAndRevisionRequestV0H\x00\x1a\x43\n&GetIdentityBalanceAndRevisionRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9e\x02\n\x13GetIdentityResponse\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetIdentityResponse.GetIdentityResponseV0H\x00\x1a\xa7\x01\n\x15GetIdentityResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbc\x02\n\x18GetIdentityNonceResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetIdentityNonceResponse.GetIdentityNonceResponseV0H\x00\x1a\xb6\x01\n\x1aGetIdentityNonceResponseV0\x12\x1c\n\x0eidentity_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xe5\x02\n GetIdentityContractNonceResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse.GetIdentityContractNonceResponseV0H\x00\x1a\xc7\x01\n\"GetIdentityContractNonceResponseV0\x12%\n\x17identity_contract_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n\x1aGetIdentityBalanceResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetIdentityBalanceResponse.GetIdentityBalanceResponseV0H\x00\x1a\xb1\x01\n\x1cGetIdentityBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb1\x04\n%GetIdentityBalanceAndRevisionResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0H\x00\x1a\x84\x03\n\'GetIdentityBalanceAndRevisionResponseV0\x12\x9b\x01\n\x14\x62\x61lance_and_revision\x18\x01 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0.BalanceAndRevisionH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x12\x42\x61lanceAndRevision\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x14\n\x08revision\x18\x02 \x01(\x04\x42\x02\x30\x01\x42\x08\n\x06resultB\t\n\x07version\"\xd1\x01\n\x0eKeyRequestType\x12\x36\n\x08\x61ll_keys\x18\x01 \x01(\x0b\x32\".org.dash.platform.dapi.v0.AllKeysH\x00\x12@\n\rspecific_keys\x18\x02 \x01(\x0b\x32\'.org.dash.platform.dapi.v0.SpecificKeysH\x00\x12:\n\nsearch_key\x18\x03 \x01(\x0b\x32$.org.dash.platform.dapi.v0.SearchKeyH\x00\x42\t\n\x07request\"\t\n\x07\x41llKeys\"\x1f\n\x0cSpecificKeys\x12\x0f\n\x07key_ids\x18\x01 \x03(\r\"\xb6\x01\n\tSearchKey\x12I\n\x0bpurpose_map\x18\x01 \x03(\x0b\x32\x34.org.dash.platform.dapi.v0.SearchKey.PurposeMapEntry\x1a^\n\x0fPurposeMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.org.dash.platform.dapi.v0.SecurityLevelMap:\x02\x38\x01\"\xbf\x02\n\x10SecurityLevelMap\x12]\n\x12security_level_map\x18\x01 \x03(\x0b\x32\x41.org.dash.platform.dapi.v0.SecurityLevelMap.SecurityLevelMapEntry\x1aw\n\x15SecurityLevelMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12M\n\x05value\x18\x02 \x01(\x0e\x32>.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType:\x02\x38\x01\"S\n\x12KeyKindRequestType\x12\x1f\n\x1b\x43URRENT_KEY_OF_KIND_REQUEST\x10\x00\x12\x1c\n\x18\x41LL_KEYS_OF_KIND_REQUEST\x10\x01\"\xda\x02\n\x16GetIdentityKeysRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetIdentityKeysRequest.GetIdentityKeysRequestV0H\x00\x1a\xda\x01\n\x18GetIdentityKeysRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12?\n\x0crequest_type\x18\x02 \x01(\x0b\x32).org.dash.platform.dapi.v0.KeyRequestType\x12+\n\x05limit\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\x99\x03\n\x17GetIdentityKeysResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0H\x00\x1a\x96\x02\n\x19GetIdentityKeysResponseV0\x12\x61\n\x04keys\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0.KeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1a\n\x04Keys\x12\x12\n\nkeys_bytes\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xef\x02\n GetIdentitiesContractKeysRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest.GetIdentitiesContractKeysRequestV0H\x00\x1a\xd1\x01\n\"GetIdentitiesContractKeysRequestV0\x12\x16\n\x0eidentities_ids\x18\x01 \x03(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\x1f\n\x12\x64ocument_type_name\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x08purposes\x18\x04 \x03(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x15\n\x13_document_type_nameB\t\n\x07version\"\xdf\x06\n!GetIdentitiesContractKeysResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0H\x00\x1a\xbe\x05\n#GetIdentitiesContractKeysResponseV0\x12\x8a\x01\n\x0fidentities_keys\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentitiesKeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aY\n\x0bPurposeKeys\x12\x36\n\x07purpose\x18\x01 \x01(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\x12\n\nkeys_bytes\x18\x02 \x03(\x0c\x1a\x9f\x01\n\x0cIdentityKeys\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12z\n\x04keys\x18\x02 \x03(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.PurposeKeys\x1a\x90\x01\n\x0eIdentitiesKeys\x12~\n\x07\x65ntries\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentityKeysB\x08\n\x06resultB\t\n\x07version\"\xa4\x02\n*GetEvonodesProposedEpochBlocksByIdsRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest.GetEvonodesProposedEpochBlocksByIdsRequestV0H\x00\x1ah\n,GetEvonodesProposedEpochBlocksByIdsRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0b\n\x03ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x08\n\x06_epochB\t\n\x07version\"\x92\x06\n&GetEvonodesProposedEpochBlocksResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0H\x00\x1a\xe2\x04\n(GetEvonodesProposedEpochBlocksResponseV0\x12\xb1\x01\n#evonodes_proposed_block_counts_info\x18\x01 \x01(\x0b\x32\x81\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodesProposedBlocksH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x15\x45vonodeProposedBlocks\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x11\n\x05\x63ount\x18\x02 \x01(\x04\x42\x02\x30\x01\x1a\xc4\x01\n\x16\x45vonodesProposedBlocks\x12\xa9\x01\n\x1e\x65vonodes_proposed_block_counts\x18\x01 \x03(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodeProposedBlocksB\x08\n\x06resultB\t\n\x07version\"\xf2\x02\n,GetEvonodesProposedEpochBlocksByRangeRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest.GetEvonodesProposedEpochBlocksByRangeRequestV0H\x00\x1a\xaf\x01\n.GetEvonodesProposedEpochBlocksByRangeRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x02 \x01(\rH\x02\x88\x01\x01\x12\x15\n\x0bstart_after\x18\x03 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x04 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x07\n\x05startB\x08\n\x06_epochB\x08\n\x06_limitB\t\n\x07version\"\xcd\x01\n\x1cGetIdentitiesBalancesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest.GetIdentitiesBalancesRequestV0H\x00\x1a<\n\x1eGetIdentitiesBalancesRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9f\x05\n\x1dGetIdentitiesBalancesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0H\x00\x1a\x8a\x04\n\x1fGetIdentitiesBalancesResponseV0\x12\x8a\x01\n\x13identities_balances\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentitiesBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aL\n\x0fIdentityBalance\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x8f\x01\n\x12IdentitiesBalances\x12y\n\x07\x65ntries\x18\x01 \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentityBalanceB\x08\n\x06resultB\t\n\x07version\"\xb4\x01\n\x16GetDataContractRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetDataContractRequest.GetDataContractRequestV0H\x00\x1a\x35\n\x18GetDataContractRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xb3\x02\n\x17GetDataContractResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractResponse.GetDataContractResponseV0H\x00\x1a\xb0\x01\n\x19GetDataContractResponseV0\x12\x17\n\rdata_contract\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb9\x01\n\x17GetDataContractsRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractsRequest.GetDataContractsRequestV0H\x00\x1a\x37\n\x19GetDataContractsRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xcf\x04\n\x18GetDataContractsResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetDataContractsResponse.GetDataContractsResponseV0H\x00\x1a[\n\x11\x44\x61taContractEntry\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x32\n\rdata_contract\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x1au\n\rDataContracts\x12\x64\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32\x45.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractEntry\x1a\xf5\x01\n\x1aGetDataContractsResponseV0\x12[\n\x0e\x64\x61ta_contracts\x18\x01 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc5\x02\n\x1dGetDataContractHistoryRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetDataContractHistoryRequest.GetDataContractHistoryRequestV0H\x00\x1a\xb0\x01\n\x1fGetDataContractHistoryRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0bstart_at_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xb2\x05\n\x1eGetDataContractHistoryResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0H\x00\x1a\x9a\x04\n GetDataContractHistoryResponseV0\x12\x8f\x01\n\x15\x64\x61ta_contract_history\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a;\n\x18\x44\x61taContractHistoryEntry\x12\x10\n\x04\x64\x61te\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05value\x18\x02 \x01(\x0c\x1a\xaa\x01\n\x13\x44\x61taContractHistory\x12\x92\x01\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32s.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryEntryB\x08\n\x06resultB\t\n\x07version\"\xb2\x02\n\x13GetDocumentsRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetDocumentsRequest.GetDocumentsRequestV0H\x00\x1a\xbb\x01\n\x15GetDocumentsRequestV0\x12\x18\n\x10\x64\x61ta_contract_id\x18\x01 \x01(\x0c\x12\x15\n\rdocument_type\x18\x02 \x01(\t\x12\r\n\x05where\x18\x03 \x01(\x0c\x12\x10\n\x08order_by\x18\x04 \x01(\x0c\x12\r\n\x05limit\x18\x05 \x01(\r\x12\x15\n\x0bstart_after\x18\x06 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x07 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x08 \x01(\x08\x42\x07\n\x05startB\t\n\x07version\"\x95\x03\n\x14GetDocumentsResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0H\x00\x1a\x9b\x02\n\x16GetDocumentsResponseV0\x12\x65\n\tdocuments\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0.DocumentsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1e\n\tDocuments\x12\x11\n\tdocuments\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xed\x01\n!GetIdentityByPublicKeyHashRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest.GetIdentityByPublicKeyHashRequestV0H\x00\x1aM\n#GetIdentityByPublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xda\x02\n\"GetIdentityByPublicKeyHashResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse.GetIdentityByPublicKeyHashResponseV0H\x00\x1a\xb6\x01\n$GetIdentityByPublicKeyHashResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n*GetIdentityByNonUniquePublicKeyHashRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest.GetIdentityByNonUniquePublicKeyHashRequestV0H\x00\x1a\x80\x01\n,GetIdentityByNonUniquePublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\x18\n\x0bstart_after\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x0e\n\x0c_start_afterB\t\n\x07version\"\xd6\x06\n+GetIdentityByNonUniquePublicKeyHashResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0H\x00\x1a\x96\x05\n-GetIdentityByNonUniquePublicKeyHashResponseV0\x12\x9a\x01\n\x08identity\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityResponseH\x00\x12\x9d\x01\n\x05proof\x18\x02 \x01(\x0b\x32\x8b\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityProvedResponseH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x36\n\x10IdentityResponse\x12\x15\n\x08identity\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x0b\n\t_identity\x1a\xa6\x01\n\x16IdentityProvedResponse\x12P\n&grovedb_identity_public_key_hash_proof\x18\x01 \x01(\x0b\x32 .org.dash.platform.dapi.v0.Proof\x12!\n\x14identity_proof_bytes\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x17\n\x15_identity_proof_bytesB\x08\n\x06resultB\t\n\x07version\"\xfb\x01\n#WaitForStateTransitionResultRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0H\x00\x1aU\n%WaitForStateTransitionResultRequestV0\x12\x1d\n\x15state_transition_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x99\x03\n$WaitForStateTransitionResultResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0H\x00\x1a\xef\x01\n&WaitForStateTransitionResultResponseV0\x12I\n\x05\x65rror\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.StateTransitionBroadcastErrorH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x19GetConsensusParamsRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetConsensusParamsRequest.GetConsensusParamsRequestV0H\x00\x1a<\n\x1bGetConsensusParamsRequestV0\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9c\x04\n\x1aGetConsensusParamsResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetConsensusParamsResponse.GetConsensusParamsResponseV0H\x00\x1aP\n\x14\x43onsensusParamsBlock\x12\x11\n\tmax_bytes\x18\x01 \x01(\t\x12\x0f\n\x07max_gas\x18\x02 \x01(\t\x12\x14\n\x0ctime_iota_ms\x18\x03 \x01(\t\x1a\x62\n\x17\x43onsensusParamsEvidence\x12\x1a\n\x12max_age_num_blocks\x18\x01 \x01(\t\x12\x18\n\x10max_age_duration\x18\x02 \x01(\t\x12\x11\n\tmax_bytes\x18\x03 \x01(\t\x1a\xda\x01\n\x1cGetConsensusParamsResponseV0\x12Y\n\x05\x62lock\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsBlock\x12_\n\x08\x65vidence\x18\x02 \x01(\x0b\x32M.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsEvidenceB\t\n\x07version\"\xe4\x01\n%GetProtocolVersionUpgradeStateRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest.GetProtocolVersionUpgradeStateRequestV0H\x00\x1a\x38\n\'GetProtocolVersionUpgradeStateRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xb5\x05\n&GetProtocolVersionUpgradeStateResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0H\x00\x1a\x85\x04\n(GetProtocolVersionUpgradeStateResponseV0\x12\x87\x01\n\x08versions\x18\x01 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x96\x01\n\x08Versions\x12\x89\x01\n\x08versions\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionEntry\x1a:\n\x0cVersionEntry\x12\x16\n\x0eversion_number\x18\x01 \x01(\r\x12\x12\n\nvote_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xa3\x02\n*GetProtocolVersionUpgradeVoteStatusRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest.GetProtocolVersionUpgradeVoteStatusRequestV0H\x00\x1ag\n,GetProtocolVersionUpgradeVoteStatusRequestV0\x12\x19\n\x11start_pro_tx_hash\x18\x01 \x01(\x0c\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xef\x05\n+GetProtocolVersionUpgradeVoteStatusResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0H\x00\x1a\xaf\x04\n-GetProtocolVersionUpgradeVoteStatusResponseV0\x12\x98\x01\n\x08versions\x18\x01 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignalsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xaf\x01\n\x0eVersionSignals\x12\x9c\x01\n\x0fversion_signals\x18\x01 \x03(\x0b\x32\x82\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignal\x1a\x35\n\rVersionSignal\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07version\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xf5\x01\n\x14GetEpochsInfoRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetEpochsInfoRequest.GetEpochsInfoRequestV0H\x00\x1a|\n\x16GetEpochsInfoRequestV0\x12\x31\n\x0bstart_epoch\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\x11\n\tascending\x18\x03 \x01(\x08\x12\r\n\x05prove\x18\x04 \x01(\x08\x42\t\n\x07version\"\x99\x05\n\x15GetEpochsInfoResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0H\x00\x1a\x9c\x04\n\x17GetEpochsInfoResponseV0\x12\x65\n\x06\x65pochs\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1au\n\nEpochInfos\x12g\n\x0b\x65poch_infos\x18\x01 \x03(\x0b\x32R.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfo\x1a\xa6\x01\n\tEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x16\n\nstart_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xbf\x02\n\x1dGetFinalizedEpochInfosRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest.GetFinalizedEpochInfosRequestV0H\x00\x1a\xaa\x01\n\x1fGetFinalizedEpochInfosRequestV0\x12\x19\n\x11start_epoch_index\x18\x01 \x01(\r\x12\"\n\x1astart_epoch_index_included\x18\x02 \x01(\x08\x12\x17\n\x0f\x65nd_epoch_index\x18\x03 \x01(\r\x12 \n\x18\x65nd_epoch_index_included\x18\x04 \x01(\x08\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xbd\t\n\x1eGetFinalizedEpochInfosResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0H\x00\x1a\xa5\x08\n GetFinalizedEpochInfosResponseV0\x12\x80\x01\n\x06\x65pochs\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xa4\x01\n\x13\x46inalizedEpochInfos\x12\x8c\x01\n\x15\x66inalized_epoch_infos\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfo\x1a\x9f\x04\n\x12\x46inalizedEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x1c\n\x10\x66irst_block_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\r\x12!\n\x15total_blocks_in_epoch\x18\x07 \x01(\x04\x42\x02\x30\x01\x12*\n\"next_epoch_start_core_block_height\x18\x08 \x01(\r\x12!\n\x15total_processing_fees\x18\t \x01(\x04\x42\x02\x30\x01\x12*\n\x1etotal_distributed_storage_fees\x18\n \x01(\x04\x42\x02\x30\x01\x12&\n\x1atotal_created_storage_fees\x18\x0b \x01(\x04\x42\x02\x30\x01\x12\x1e\n\x12\x63ore_block_rewards\x18\x0c \x01(\x04\x42\x02\x30\x01\x12\x81\x01\n\x0f\x62lock_proposers\x18\r \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.BlockProposer\x1a\x39\n\rBlockProposer\x12\x13\n\x0bproposer_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x62lock_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xde\x04\n\x1cGetContestedResourcesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0H\x00\x1a\xcc\x03\n\x1eGetContestedResourcesRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x1a\n\x12start_index_values\x18\x04 \x03(\x0c\x12\x18\n\x10\x65nd_index_values\x18\x05 \x03(\x0c\x12\x89\x01\n\x13start_at_value_info\x18\x06 \x01(\x0b\x32g.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0.StartAtValueInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1a\x45\n\x10StartAtValueInfo\x12\x13\n\x0bstart_value\x18\x01 \x01(\x0c\x12\x1c\n\x14start_value_included\x18\x02 \x01(\x08\x42\x16\n\x14_start_at_value_infoB\x08\n\x06_countB\t\n\x07version\"\x88\x04\n\x1dGetContestedResourcesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0H\x00\x1a\xf3\x02\n\x1fGetContestedResourcesResponseV0\x12\x95\x01\n\x19\x63ontested_resource_values\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0.ContestedResourceValuesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a<\n\x17\x43ontestedResourceValues\x12!\n\x19\x63ontested_resource_values\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x05\n\x1cGetVotePollsByEndDateRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0H\x00\x1a\xc0\x04\n\x1eGetVotePollsByEndDateRequestV0\x12\x84\x01\n\x0fstart_time_info\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.StartAtTimeInfoH\x00\x88\x01\x01\x12\x80\x01\n\rend_time_info\x18\x02 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.EndAtTimeInfoH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x11\n\tascending\x18\x05 \x01(\x08\x12\r\n\x05prove\x18\x06 \x01(\x08\x1aI\n\x0fStartAtTimeInfo\x12\x19\n\rstart_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13start_time_included\x18\x02 \x01(\x08\x1a\x43\n\rEndAtTimeInfo\x12\x17\n\x0b\x65nd_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x65nd_time_included\x18\x02 \x01(\x08\x42\x12\n\x10_start_time_infoB\x10\n\x0e_end_time_infoB\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07version\"\x83\x06\n\x1dGetVotePollsByEndDateResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0H\x00\x1a\xee\x04\n\x1fGetVotePollsByEndDateResponseV0\x12\x9c\x01\n\x18vote_polls_by_timestamps\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestampsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aV\n\x1eSerializedVotePollsByTimestamp\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x15serialized_vote_polls\x18\x02 \x03(\x0c\x1a\xd7\x01\n\x1fSerializedVotePollsByTimestamps\x12\x99\x01\n\x18vote_polls_by_timestamps\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestamp\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xff\x06\n$GetContestedResourceVoteStateRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0H\x00\x1a\xd5\x05\n&GetContestedResourceVoteStateRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x86\x01\n\x0bresult_type\x18\x05 \x01(\x0e\x32q.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.ResultType\x12\x36\n.allow_include_locked_and_abstaining_vote_tally\x18\x06 \x01(\x08\x12\xa3\x01\n\x18start_at_identifier_info\x18\x07 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x08 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\"I\n\nResultType\x12\r\n\tDOCUMENTS\x10\x00\x12\x0e\n\nVOTE_TALLY\x10\x01\x12\x1c\n\x18\x44OCUMENTS_AND_VOTE_TALLY\x10\x02\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\x94\x0c\n%GetContestedResourceVoteStateResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0H\x00\x1a\xe7\n\n\'GetContestedResourceVoteStateResponseV0\x12\xae\x01\n\x1d\x63ontested_resource_contenders\x18\x01 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.ContestedResourceContendersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xda\x03\n\x10\x46inishedVoteInfo\x12\xad\x01\n\x15\x66inished_vote_outcome\x18\x01 \x01(\x0e\x32\x8d\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfo.FinishedVoteOutcome\x12\x1f\n\x12won_by_identity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12$\n\x18\x66inished_at_block_height\x18\x03 \x01(\x04\x42\x02\x30\x01\x12%\n\x1d\x66inished_at_core_block_height\x18\x04 \x01(\r\x12%\n\x19\x66inished_at_block_time_ms\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x66inished_at_epoch\x18\x06 \x01(\r\"O\n\x13\x46inishedVoteOutcome\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\n\n\x06LOCKED\x10\x01\x12\x16\n\x12NO_PREVIOUS_WINNER\x10\x02\x42\x15\n\x13_won_by_identity_id\x1a\xc4\x03\n\x1b\x43ontestedResourceContenders\x12\x86\x01\n\ncontenders\x18\x01 \x03(\x0b\x32r.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.Contender\x12\x1f\n\x12\x61\x62stain_vote_tally\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0flock_vote_tally\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x9a\x01\n\x12\x66inished_vote_info\x18\x04 \x01(\x0b\x32y.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfoH\x02\x88\x01\x01\x42\x15\n\x13_abstain_vote_tallyB\x12\n\x10_lock_vote_tallyB\x15\n\x13_finished_vote_info\x1ak\n\tContender\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x17\n\nvote_count\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08\x64ocument\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x42\r\n\x0b_vote_countB\x0b\n\t_documentB\x08\n\x06resultB\t\n\x07version\"\xd5\x05\n,GetContestedResourceVotersForIdentityRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0H\x00\x1a\x92\x04\n.GetContestedResourceVotersForIdentityRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x15\n\rcontestant_id\x18\x05 \x01(\x0c\x12\xb4\x01\n\x18start_at_identifier_info\x18\x06 \x01(\x0b\x32\x8c\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\xf1\x04\n-GetContestedResourceVotersForIdentityResponse\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0H\x00\x1a\xab\x03\n/GetContestedResourceVotersForIdentityResponseV0\x12\xb6\x01\n\x19\x63ontested_resource_voters\x18\x01 \x01(\x0b\x32\x90\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0.ContestedResourceVotersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x43\n\x17\x43ontestedResourceVoters\x12\x0e\n\x06voters\x18\x01 \x03(\x0c\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xad\x05\n(GetContestedResourceIdentityVotesRequest\x12|\n\x02v0\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0H\x00\x1a\xf7\x03\n*GetContestedResourceIdentityVotesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0forder_ascending\x18\x04 \x01(\x08\x12\xae\x01\n\x1astart_at_vote_poll_id_info\x18\x05 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0.StartAtVotePollIdInfoH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x1a\x61\n\x15StartAtVotePollIdInfo\x12 \n\x18start_at_poll_identifier\x18\x01 \x01(\x0c\x12&\n\x1estart_poll_identifier_included\x18\x02 \x01(\x08\x42\x1d\n\x1b_start_at_vote_poll_id_infoB\t\n\x07version\"\xc8\n\n)GetContestedResourceIdentityVotesResponse\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0H\x00\x1a\x8f\t\n+GetContestedResourceIdentityVotesResponseV0\x12\xa1\x01\n\x05votes\x18\x01 \x01(\x0b\x32\x8f\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVotesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xf7\x01\n\x1e\x43ontestedResourceIdentityVotes\x12\xba\x01\n!contested_resource_identity_votes\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVote\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x1a\xad\x02\n\x12ResourceVoteChoice\x12\xad\x01\n\x10vote_choice_type\x18\x01 \x01(\x0e\x32\x92\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoice.VoteChoiceType\x12\x18\n\x0bidentity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\"=\n\x0eVoteChoiceType\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\x0b\n\x07\x41\x42STAIN\x10\x01\x12\x08\n\x04LOCK\x10\x02\x42\x0e\n\x0c_identity_id\x1a\x95\x02\n\x1d\x43ontestedResourceIdentityVote\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\'\n\x1fserialized_index_storage_values\x18\x03 \x03(\x0c\x12\x99\x01\n\x0bvote_choice\x18\x04 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoiceB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n%GetPrefundedSpecializedBalanceRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest.GetPrefundedSpecializedBalanceRequestV0H\x00\x1a\x44\n\'GetPrefundedSpecializedBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xed\x02\n&GetPrefundedSpecializedBalanceResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse.GetPrefundedSpecializedBalanceResponseV0H\x00\x1a\xbd\x01\n(GetPrefundedSpecializedBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xd0\x01\n GetTotalCreditsInPlatformRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest.GetTotalCreditsInPlatformRequestV0H\x00\x1a\x33\n\"GetTotalCreditsInPlatformRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xd9\x02\n!GetTotalCreditsInPlatformResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse.GetTotalCreditsInPlatformResponseV0H\x00\x1a\xb8\x01\n#GetTotalCreditsInPlatformResponseV0\x12\x15\n\x07\x63redits\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x16GetPathElementsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetPathElementsRequest.GetPathElementsRequestV0H\x00\x1a\x45\n\x18GetPathElementsRequestV0\x12\x0c\n\x04path\x18\x01 \x03(\x0c\x12\x0c\n\x04keys\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xa3\x03\n\x17GetPathElementsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0H\x00\x1a\xa0\x02\n\x19GetPathElementsResponseV0\x12i\n\x08\x65lements\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0.ElementsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1c\n\x08\x45lements\x12\x10\n\x08\x65lements\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\x81\x01\n\x10GetStatusRequest\x12L\n\x02v0\x18\x01 \x01(\x0b\x32>.org.dash.platform.dapi.v0.GetStatusRequest.GetStatusRequestV0H\x00\x1a\x14\n\x12GetStatusRequestV0B\t\n\x07version\"\xd0\x10\n\x11GetStatusResponse\x12N\n\x02v0\x18\x01 \x01(\x0b\x32@.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0H\x00\x1a\xdf\x0f\n\x13GetStatusResponseV0\x12Y\n\x07version\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version\x12S\n\x04node\x18\x02 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Node\x12U\n\x05\x63hain\x18\x03 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Chain\x12Y\n\x07network\x18\x04 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Network\x12^\n\nstate_sync\x18\x05 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.StateSync\x12S\n\x04time\x18\x06 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Time\x1a\xee\x04\n\x07Version\x12\x63\n\x08software\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Software\x12\x63\n\x08protocol\x18\x02 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol\x1a^\n\x08Software\x12\x0c\n\x04\x64\x61pi\x18\x01 \x01(\t\x12\x12\n\x05\x64rive\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ntenderdash\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_driveB\r\n\x0b_tenderdash\x1a\xb8\x02\n\x08Protocol\x12p\n\ntenderdash\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Tenderdash\x12\x66\n\x05\x64rive\x18\x02 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Drive\x1a(\n\nTenderdash\x12\x0b\n\x03p2p\x18\x01 \x01(\r\x12\r\n\x05\x62lock\x18\x02 \x01(\r\x1a(\n\x05\x44rive\x12\x0e\n\x06latest\x18\x03 \x01(\r\x12\x0f\n\x07\x63urrent\x18\x04 \x01(\r\x1a\x7f\n\x04Time\x12\x11\n\x05local\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x05\x62lock\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x12\x18\n\x07genesis\x18\x03 \x01(\x04\x42\x02\x30\x01H\x01\x88\x01\x01\x12\x12\n\x05\x65poch\x18\x04 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_blockB\n\n\x08_genesisB\x08\n\x06_epoch\x1a<\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x18\n\x0bpro_tx_hash\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x0e\n\x0c_pro_tx_hash\x1a\xb3\x02\n\x05\x43hain\x12\x13\n\x0b\x63\x61tching_up\x18\x01 \x01(\x08\x12\x19\n\x11latest_block_hash\x18\x02 \x01(\x0c\x12\x17\n\x0flatest_app_hash\x18\x03 \x01(\x0c\x12\x1f\n\x13latest_block_height\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13\x65\x61rliest_block_hash\x18\x05 \x01(\x0c\x12\x19\n\x11\x65\x61rliest_app_hash\x18\x06 \x01(\x0c\x12!\n\x15\x65\x61rliest_block_height\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15max_peer_block_height\x18\t \x01(\x04\x42\x02\x30\x01\x12%\n\x18\x63ore_chain_locked_height\x18\n \x01(\rH\x00\x88\x01\x01\x42\x1b\n\x19_core_chain_locked_height\x1a\x43\n\x07Network\x12\x10\n\x08\x63hain_id\x18\x01 \x01(\t\x12\x13\n\x0bpeers_count\x18\x02 \x01(\r\x12\x11\n\tlistening\x18\x03 \x01(\x08\x1a\x85\x02\n\tStateSync\x12\x1d\n\x11total_synced_time\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1a\n\x0eremaining_time\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0ftotal_snapshots\x18\x03 \x01(\r\x12\"\n\x16\x63hunk_process_avg_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x0fsnapshot_height\x18\x05 \x01(\x04\x42\x02\x30\x01\x12!\n\x15snapshot_chunks_count\x18\x06 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x11\x62\x61\x63kfilled_blocks\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15\x62\x61\x63kfill_blocks_total\x18\x08 \x01(\x04\x42\x02\x30\x01\x42\t\n\x07version\"\xb1\x01\n\x1cGetCurrentQuorumsInfoRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest.GetCurrentQuorumsInfoRequestV0H\x00\x1a \n\x1eGetCurrentQuorumsInfoRequestV0B\t\n\x07version\"\xa1\x05\n\x1dGetCurrentQuorumsInfoResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.GetCurrentQuorumsInfoResponseV0H\x00\x1a\x46\n\x0bValidatorV0\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07node_ip\x18\x02 \x01(\t\x12\x11\n\tis_banned\x18\x03 \x01(\x08\x1a\xaf\x01\n\x0eValidatorSetV0\x12\x13\n\x0bquorum_hash\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ore_height\x18\x02 \x01(\r\x12U\n\x07members\x18\x03 \x03(\x0b\x32\x44.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorV0\x12\x1c\n\x14threshold_public_key\x18\x04 \x01(\x0c\x1a\x92\x02\n\x1fGetCurrentQuorumsInfoResponseV0\x12\x15\n\rquorum_hashes\x18\x01 \x03(\x0c\x12\x1b\n\x13\x63urrent_quorum_hash\x18\x02 \x01(\x0c\x12_\n\x0evalidator_sets\x18\x03 \x03(\x0b\x32G.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorSetV0\x12\x1b\n\x13last_block_proposer\x18\x04 \x01(\x0c\x12=\n\x08metadata\x18\x05 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\t\n\x07version\"\xf4\x01\n\x1fGetIdentityTokenBalancesRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest.GetIdentityTokenBalancesRequestV0H\x00\x1aZ\n!GetIdentityTokenBalancesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xad\x05\n GetIdentityTokenBalancesResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0H\x00\x1a\x8f\x04\n\"GetIdentityTokenBalancesResponseV0\x12\x86\x01\n\x0etoken_balances\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aG\n\x11TokenBalanceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x9a\x01\n\rTokenBalances\x12\x88\x01\n\x0etoken_balances\x18\x01 \x03(\x0b\x32p.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xfc\x01\n!GetIdentitiesTokenBalancesRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest.GetIdentitiesTokenBalancesRequestV0H\x00\x1a\\\n#GetIdentitiesTokenBalancesRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xf2\x05\n\"GetIdentitiesTokenBalancesResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0H\x00\x1a\xce\x04\n$GetIdentitiesTokenBalancesResponseV0\x12\x9b\x01\n\x17identity_token_balances\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aR\n\x19IdentityTokenBalanceEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\xb7\x01\n\x15IdentityTokenBalances\x12\x9d\x01\n\x17identity_token_balances\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xe8\x01\n\x1cGetIdentityTokenInfosRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest.GetIdentityTokenInfosRequestV0H\x00\x1aW\n\x1eGetIdentityTokenInfosRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\x98\x06\n\x1dGetIdentityTokenInfosResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0H\x00\x1a\x83\x05\n\x1fGetIdentityTokenInfosResponseV0\x12z\n\x0btoken_infos\x18\x01 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb0\x01\n\x0eTokenInfoEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x82\x01\n\x04info\x18\x02 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x8a\x01\n\nTokenInfos\x12|\n\x0btoken_infos\x18\x01 \x03(\x0b\x32g.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n\x1eGetIdentitiesTokenInfosRequest\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest.GetIdentitiesTokenInfosRequestV0H\x00\x1aY\n GetIdentitiesTokenInfosRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xca\x06\n\x1fGetIdentitiesTokenInfosResponse\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0H\x00\x1a\xaf\x05\n!GetIdentitiesTokenInfosResponseV0\x12\x8f\x01\n\x14identity_token_infos\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.IdentityTokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb7\x01\n\x0eTokenInfoEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x86\x01\n\x04info\x18\x02 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x97\x01\n\x12IdentityTokenInfos\x12\x80\x01\n\x0btoken_infos\x18\x01 \x03(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbf\x01\n\x17GetTokenStatusesRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetTokenStatusesRequest.GetTokenStatusesRequestV0H\x00\x1a=\n\x19GetTokenStatusesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xe7\x04\n\x18GetTokenStatusesResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0H\x00\x1a\xe1\x03\n\x1aGetTokenStatusesResponseV0\x12v\n\x0etoken_statuses\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x44\n\x10TokenStatusEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x13\n\x06paused\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_paused\x1a\x88\x01\n\rTokenStatuses\x12w\n\x0etoken_statuses\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusEntryB\x08\n\x06resultB\t\n\x07version\"\xef\x01\n#GetTokenDirectPurchasePricesRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest.GetTokenDirectPurchasePricesRequestV0H\x00\x1aI\n%GetTokenDirectPurchasePricesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x8b\t\n$GetTokenDirectPurchasePricesResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0H\x00\x1a\xe1\x07\n&GetTokenDirectPurchasePricesResponseV0\x12\xa9\x01\n\x1ctoken_direct_purchase_prices\x18\x01 \x01(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePricesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xa7\x01\n\x0fPricingSchedule\x12\x93\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PriceForQuantity\x1a\xe4\x01\n\x1dTokenDirectPurchasePriceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x15\n\x0b\x66ixed_price\x18\x02 \x01(\x04H\x00\x12\x90\x01\n\x0evariable_price\x18\x03 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PricingScheduleH\x00\x42\x07\n\x05price\x1a\xc8\x01\n\x19TokenDirectPurchasePrices\x12\xaa\x01\n\x1btoken_direct_purchase_price\x18\x01 \x03(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePriceEntryB\x08\n\x06resultB\t\n\x07version\"\xce\x01\n\x1bGetTokenContractInfoRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenContractInfoRequest.GetTokenContractInfoRequestV0H\x00\x1a@\n\x1dGetTokenContractInfoRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xfb\x03\n\x1cGetTokenContractInfoResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0H\x00\x1a\xe9\x02\n\x1eGetTokenContractInfoResponseV0\x12|\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0.TokenContractInfoDataH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aM\n\x15TokenContractInfoData\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xef\x04\n)GetTokenPreProgrammedDistributionsRequest\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0H\x00\x1a\xb6\x03\n+GetTokenPreProgrammedDistributionsRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x98\x01\n\rstart_at_info\x18\x02 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0.StartAtInfoH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x1a\x9a\x01\n\x0bStartAtInfo\x12\x15\n\rstart_time_ms\x18\x01 \x01(\x04\x12\x1c\n\x0fstart_recipient\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12%\n\x18start_recipient_included\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_start_recipientB\x1b\n\x19_start_recipient_includedB\x10\n\x0e_start_at_infoB\x08\n\x06_limitB\t\n\x07version\"\xec\x07\n*GetTokenPreProgrammedDistributionsResponse\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0H\x00\x1a\xaf\x06\n,GetTokenPreProgrammedDistributionsResponseV0\x12\xa5\x01\n\x13token_distributions\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a>\n\x16TokenDistributionEntry\x12\x14\n\x0crecipient_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x1a\xd4\x01\n\x1bTokenTimedDistributionEntry\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\xa1\x01\n\rdistributions\x18\x02 \x03(\x0b\x32\x89\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionEntry\x1a\xc3\x01\n\x12TokenDistributions\x12\xac\x01\n\x13token_distributions\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenTimedDistributionEntryB\x08\n\x06resultB\t\n\x07version\"\x82\x04\n-GetTokenPerpetualDistributionLastClaimRequest\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.GetTokenPerpetualDistributionLastClaimRequestV0H\x00\x1aI\n\x11\x43ontractTokenInfo\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\r\x1a\xf1\x01\n/GetTokenPerpetualDistributionLastClaimRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12v\n\rcontract_info\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.ContractTokenInfoH\x00\x88\x01\x01\x12\x13\n\x0bidentity_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x10\n\x0e_contract_infoB\t\n\x07version\"\x93\x05\n.GetTokenPerpetualDistributionLastClaimResponse\x12\x88\x01\n\x02v0\x18\x01 \x01(\x0b\x32z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0H\x00\x1a\xca\x03\n0GetTokenPerpetualDistributionLastClaimResponseV0\x12\x9f\x01\n\nlast_claim\x18\x01 \x01(\x0b\x32\x88\x01.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0.LastClaimInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\rLastClaimInfo\x12\x1a\n\x0ctimestamp_ms\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x1a\n\x0c\x62lock_height\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x12\x0f\n\x05\x65poch\x18\x03 \x01(\rH\x00\x12\x13\n\traw_bytes\x18\x04 \x01(\x0cH\x00\x42\t\n\x07paid_atB\x08\n\x06resultB\t\n\x07version\"\xca\x01\n\x1aGetTokenTotalSupplyRequest\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest.GetTokenTotalSupplyRequestV0H\x00\x1a?\n\x1cGetTokenTotalSupplyRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xaf\x04\n\x1bGetTokenTotalSupplyResponse\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0H\x00\x1a\xa0\x03\n\x1dGetTokenTotalSupplyResponseV0\x12\x88\x01\n\x12token_total_supply\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0.TokenTotalSupplyEntryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\x15TokenTotalSupplyEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x30\n(total_aggregated_amount_in_user_accounts\x18\x02 \x01(\x04\x12\x1b\n\x13total_system_amount\x18\x03 \x01(\x04\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x01\n\x13GetGroupInfoRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetGroupInfoRequest.GetGroupInfoRequestV0H\x00\x1a\\\n\x15GetGroupInfoRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xd4\x05\n\x14GetGroupInfoResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0H\x00\x1a\xda\x04\n\x16GetGroupInfoResponseV0\x12\x66\n\ngroup_info\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x98\x01\n\x0eGroupInfoEntry\x12h\n\x07members\x18\x01 \x03(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x02 \x01(\r\x1a\x8a\x01\n\tGroupInfo\x12n\n\ngroup_info\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoEntryH\x00\x88\x01\x01\x42\r\n\x0b_group_infoB\x08\n\x06resultB\t\n\x07version\"\xed\x03\n\x14GetGroupInfosRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfosRequest.GetGroupInfosRequestV0H\x00\x1au\n\x1cStartAtGroupContractPosition\x12%\n\x1dstart_group_contract_position\x18\x01 \x01(\r\x12.\n&start_group_contract_position_included\x18\x02 \x01(\x08\x1a\xfc\x01\n\x16GetGroupInfosRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12{\n start_at_group_contract_position\x18\x02 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupInfosRequest.StartAtGroupContractPositionH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x42#\n!_start_at_group_contract_positionB\x08\n\x06_countB\t\n\x07version\"\xff\x05\n\x15GetGroupInfosResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0H\x00\x1a\x82\x05\n\x17GetGroupInfosResponseV0\x12j\n\x0bgroup_infos\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\xc3\x01\n\x16GroupPositionInfoEntry\x12\x1f\n\x17group_contract_position\x18\x01 \x01(\r\x12j\n\x07members\x18\x02 \x03(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x03 \x01(\r\x1a\x82\x01\n\nGroupInfos\x12t\n\x0bgroup_infos\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupPositionInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbe\x04\n\x16GetGroupActionsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetGroupActionsRequest.GetGroupActionsRequestV0H\x00\x1aL\n\x0fStartAtActionId\x12\x17\n\x0fstart_action_id\x18\x01 \x01(\x0c\x12 \n\x18start_action_id_included\x18\x02 \x01(\x08\x1a\xc8\x02\n\x18GetGroupActionsRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12N\n\x06status\x18\x03 \x01(\x0e\x32>.org.dash.platform.dapi.v0.GetGroupActionsRequest.ActionStatus\x12\x62\n\x12start_at_action_id\x18\x04 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetGroupActionsRequest.StartAtActionIdH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x42\x15\n\x13_start_at_action_idB\x08\n\x06_count\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\xd6\x1e\n\x17GetGroupActionsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0H\x00\x1a\xd3\x1d\n\x19GetGroupActionsResponseV0\x12r\n\rgroup_actions\x18\x01 \x01(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a[\n\tMintEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0crecipient_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a[\n\tBurnEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0c\x62urn_from_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aJ\n\x0b\x46reezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aL\n\rUnfreezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x66\n\x17\x44\x65stroyFrozenFundsEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x13SharedEncryptedNote\x12\x18\n\x10sender_key_index\x18\x01 \x01(\r\x12\x1b\n\x13recipient_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a{\n\x15PersonalEncryptedNote\x12!\n\x19root_encryption_key_index\x18\x01 \x01(\r\x12\'\n\x1f\x64\x65rivation_encryption_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a\xe9\x01\n\x14\x45mergencyActionEvent\x12\x81\x01\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32l.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEvent.ActionType\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\"#\n\nActionType\x12\t\n\x05PAUSE\x10\x00\x12\n\n\x06RESUME\x10\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x16TokenConfigUpdateEvent\x12 \n\x18token_config_update_item\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\xe6\x03\n\x1eUpdateDirectPurchasePriceEvent\x12\x15\n\x0b\x66ixed_price\x18\x01 \x01(\x04H\x00\x12\x95\x01\n\x0evariable_price\x18\x02 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PricingScheduleH\x00\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x01\x88\x01\x01\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xac\x01\n\x0fPricingSchedule\x12\x98\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PriceForQuantityB\x07\n\x05priceB\x0e\n\x0c_public_note\x1a\xfc\x02\n\x10GroupActionEvent\x12n\n\x0btoken_event\x18\x01 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenEventH\x00\x12t\n\x0e\x64ocument_event\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentEventH\x00\x12t\n\x0e\x63ontract_event\x18\x03 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractEventH\x00\x42\x0c\n\nevent_type\x1a\x8b\x01\n\rDocumentEvent\x12r\n\x06\x63reate\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentCreateEventH\x00\x42\x06\n\x04type\x1a/\n\x13\x44ocumentCreateEvent\x12\x18\n\x10\x63reated_document\x18\x01 \x01(\x0c\x1a/\n\x13\x43ontractUpdateEvent\x12\x18\n\x10updated_contract\x18\x01 \x01(\x0c\x1a\x8b\x01\n\rContractEvent\x12r\n\x06update\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractUpdateEventH\x00\x42\x06\n\x04type\x1a\xd1\x07\n\nTokenEvent\x12\x66\n\x04mint\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.MintEventH\x00\x12\x66\n\x04\x62urn\x18\x02 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.BurnEventH\x00\x12j\n\x06\x66reeze\x18\x03 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.FreezeEventH\x00\x12n\n\x08unfreeze\x18\x04 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UnfreezeEventH\x00\x12\x84\x01\n\x14\x64\x65stroy_frozen_funds\x18\x05 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DestroyFrozenFundsEventH\x00\x12}\n\x10\x65mergency_action\x18\x06 \x01(\x0b\x32\x61.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEventH\x00\x12\x82\x01\n\x13token_config_update\x18\x07 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenConfigUpdateEventH\x00\x12\x83\x01\n\x0cupdate_price\x18\x08 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEventH\x00\x42\x06\n\x04type\x1a\x93\x01\n\x10GroupActionEntry\x12\x11\n\taction_id\x18\x01 \x01(\x0c\x12l\n\x05\x65vent\x18\x02 \x01(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEvent\x1a\x84\x01\n\x0cGroupActions\x12t\n\rgroup_actions\x18\x01 \x03(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEntryB\x08\n\x06resultB\t\n\x07version\"\x88\x03\n\x1cGetGroupActionSignersRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.GetGroupActionSignersRequestV0H\x00\x1a\xce\x01\n\x1eGetGroupActionSignersRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12T\n\x06status\x18\x03 \x01(\x0e\x32\x44.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.ActionStatus\x12\x11\n\taction_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\x8b\x05\n\x1dGetGroupActionSignersResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0H\x00\x1a\xf6\x03\n\x1fGetGroupActionSignersResponseV0\x12\x8b\x01\n\x14group_action_signers\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x35\n\x11GroupActionSigner\x12\x11\n\tsigner_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x91\x01\n\x12GroupActionSigners\x12{\n\x07signers\x18\x01 \x03(\x0b\x32j.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignerB\x08\n\x06resultB\t\n\x07version*Z\n\nKeyPurpose\x12\x12\n\x0e\x41UTHENTICATION\x10\x00\x12\x0e\n\nENCRYPTION\x10\x01\x12\x0e\n\nDECRYPTION\x10\x02\x12\x0c\n\x08TRANSFER\x10\x03\x12\n\n\x06VOTING\x10\x05\x32\xf4\x36\n\x08Platform\x12\x93\x01\n\x18\x62roadcastStateTransition\x12:.org.dash.platform.dapi.v0.BroadcastStateTransitionRequest\x1a;.org.dash.platform.dapi.v0.BroadcastStateTransitionResponse\x12l\n\x0bgetIdentity\x12-.org.dash.platform.dapi.v0.GetIdentityRequest\x1a..org.dash.platform.dapi.v0.GetIdentityResponse\x12x\n\x0fgetIdentityKeys\x12\x31.org.dash.platform.dapi.v0.GetIdentityKeysRequest\x1a\x32.org.dash.platform.dapi.v0.GetIdentityKeysResponse\x12\x96\x01\n\x19getIdentitiesContractKeys\x12;.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest\x1a<.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse\x12{\n\x10getIdentityNonce\x12\x32.org.dash.platform.dapi.v0.GetIdentityNonceRequest\x1a\x33.org.dash.platform.dapi.v0.GetIdentityNonceResponse\x12\x93\x01\n\x18getIdentityContractNonce\x12:.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse\x12\x81\x01\n\x12getIdentityBalance\x12\x34.org.dash.platform.dapi.v0.GetIdentityBalanceRequest\x1a\x35.org.dash.platform.dapi.v0.GetIdentityBalanceResponse\x12\x8a\x01\n\x15getIdentitiesBalances\x12\x37.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse\x12\xa2\x01\n\x1dgetIdentityBalanceAndRevision\x12?.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest\x1a@.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse\x12\xaf\x01\n#getEvonodesProposedEpochBlocksByIds\x12\x45.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12\xb3\x01\n%getEvonodesProposedEpochBlocksByRange\x12G.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12x\n\x0fgetDataContract\x12\x31.org.dash.platform.dapi.v0.GetDataContractRequest\x1a\x32.org.dash.platform.dapi.v0.GetDataContractResponse\x12\x8d\x01\n\x16getDataContractHistory\x12\x38.org.dash.platform.dapi.v0.GetDataContractHistoryRequest\x1a\x39.org.dash.platform.dapi.v0.GetDataContractHistoryResponse\x12{\n\x10getDataContracts\x12\x32.org.dash.platform.dapi.v0.GetDataContractsRequest\x1a\x33.org.dash.platform.dapi.v0.GetDataContractsResponse\x12o\n\x0cgetDocuments\x12..org.dash.platform.dapi.v0.GetDocumentsRequest\x1a/.org.dash.platform.dapi.v0.GetDocumentsResponse\x12\x99\x01\n\x1agetIdentityByPublicKeyHash\x12<.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest\x1a=.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse\x12\xb4\x01\n#getIdentityByNonUniquePublicKeyHash\x12\x45.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest\x1a\x46.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse\x12\x9f\x01\n\x1cwaitForStateTransitionResult\x12>.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest\x1a?.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse\x12\x81\x01\n\x12getConsensusParams\x12\x34.org.dash.platform.dapi.v0.GetConsensusParamsRequest\x1a\x35.org.dash.platform.dapi.v0.GetConsensusParamsResponse\x12\xa5\x01\n\x1egetProtocolVersionUpgradeState\x12@.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest\x1a\x41.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse\x12\xb4\x01\n#getProtocolVersionUpgradeVoteStatus\x12\x45.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest\x1a\x46.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse\x12r\n\rgetEpochsInfo\x12/.org.dash.platform.dapi.v0.GetEpochsInfoRequest\x1a\x30.org.dash.platform.dapi.v0.GetEpochsInfoResponse\x12\x8d\x01\n\x16getFinalizedEpochInfos\x12\x38.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest\x1a\x39.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse\x12\x8a\x01\n\x15getContestedResources\x12\x37.org.dash.platform.dapi.v0.GetContestedResourcesRequest\x1a\x38.org.dash.platform.dapi.v0.GetContestedResourcesResponse\x12\xa2\x01\n\x1dgetContestedResourceVoteState\x12?.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest\x1a@.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse\x12\xba\x01\n%getContestedResourceVotersForIdentity\x12G.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest\x1aH.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse\x12\xae\x01\n!getContestedResourceIdentityVotes\x12\x43.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest\x1a\x44.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse\x12\x8a\x01\n\x15getVotePollsByEndDate\x12\x37.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest\x1a\x38.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse\x12\xa5\x01\n\x1egetPrefundedSpecializedBalance\x12@.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest\x1a\x41.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse\x12\x96\x01\n\x19getTotalCreditsInPlatform\x12;.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest\x1a<.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse\x12x\n\x0fgetPathElements\x12\x31.org.dash.platform.dapi.v0.GetPathElementsRequest\x1a\x32.org.dash.platform.dapi.v0.GetPathElementsResponse\x12\x66\n\tgetStatus\x12+.org.dash.platform.dapi.v0.GetStatusRequest\x1a,.org.dash.platform.dapi.v0.GetStatusResponse\x12\x8a\x01\n\x15getCurrentQuorumsInfo\x12\x37.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest\x1a\x38.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse\x12\x93\x01\n\x18getIdentityTokenBalances\x12:.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse\x12\x99\x01\n\x1agetIdentitiesTokenBalances\x12<.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest\x1a=.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse\x12\x8a\x01\n\x15getIdentityTokenInfos\x12\x37.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse\x12\x90\x01\n\x17getIdentitiesTokenInfos\x12\x39.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest\x1a:.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse\x12{\n\x10getTokenStatuses\x12\x32.org.dash.platform.dapi.v0.GetTokenStatusesRequest\x1a\x33.org.dash.platform.dapi.v0.GetTokenStatusesResponse\x12\x9f\x01\n\x1cgetTokenDirectPurchasePrices\x12>.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest\x1a?.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse\x12\x87\x01\n\x14getTokenContractInfo\x12\x36.org.dash.platform.dapi.v0.GetTokenContractInfoRequest\x1a\x37.org.dash.platform.dapi.v0.GetTokenContractInfoResponse\x12\xb1\x01\n\"getTokenPreProgrammedDistributions\x12\x44.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest\x1a\x45.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse\x12\xbd\x01\n&getTokenPerpetualDistributionLastClaim\x12H.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest\x1aI.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse\x12\x84\x01\n\x13getTokenTotalSupply\x12\x35.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest\x1a\x36.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse\x12o\n\x0cgetGroupInfo\x12..org.dash.platform.dapi.v0.GetGroupInfoRequest\x1a/.org.dash.platform.dapi.v0.GetGroupInfoResponse\x12r\n\rgetGroupInfos\x12/.org.dash.platform.dapi.v0.GetGroupInfosRequest\x1a\x30.org.dash.platform.dapi.v0.GetGroupInfosResponse\x12x\n\x0fgetGroupActions\x12\x31.org.dash.platform.dapi.v0.GetGroupActionsRequest\x1a\x32.org.dash.platform.dapi.v0.GetGroupActionsResponse\x12\x8a\x01\n\x15getGroupActionSigners\x12\x37.org.dash.platform.dapi.v0.GetGroupActionSignersRequest\x1a\x38.org.dash.platform.dapi.v0.GetGroupActionSignersResponse\x12\x8c\x01\n\x17SubscribePlatformEvents\x12\x36.org.dash.platform.dapi.v0.PlatformSubscriptionRequest\x1a\x37.org.dash.platform.dapi.v0.PlatformSubscriptionResponse0\x01\x62\x06proto3' + serialized_pb=b'\n\x0eplatform.proto\x12\x19org.dash.platform.dapi.v0\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xfd\x01\n\x1bPlatformSubscriptionRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0H\x00\x1ao\n\x1dPlatformSubscriptionRequestV0\x12;\n\x06\x66ilter\x18\x01 \x01(\x0b\x32+.org.dash.platform.dapi.v0.PlatformFilterV0\x12\x11\n\tkeepalive\x18\x02 \x01(\rB\t\n\x07version\"\x8c\x02\n\x1cPlatformSubscriptionResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0H\x00\x1a{\n\x1ePlatformSubscriptionResponseV0\x12\x1e\n\x16\x63lient_subscription_id\x18\x01 \x01(\t\x12\x39\n\x05\x65vent\x18\x02 \x01(\x0b\x32*.org.dash.platform.dapi.v0.PlatformEventV0B\t\n\x07version\"?\n\x1bStateTransitionResultFilter\x12\x14\n\x07tx_hash\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\n\n\x08_tx_hash\"\x9f\x01\n\x10PlatformFilterV0\x12\r\n\x03\x61ll\x18\x01 \x01(\x08H\x00\x12\x19\n\x0f\x62lock_committed\x18\x02 \x01(\x08H\x00\x12Y\n\x17state_transition_result\x18\x03 \x01(\x0b\x32\x36.org.dash.platform.dapi.v0.StateTransitionResultFilterH\x00\x42\x06\n\x04kind\"\xe5\x04\n\x0fPlatformEventV0\x12T\n\x0f\x62lock_committed\x18\x01 \x01(\x0b\x32\x39.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommittedH\x00\x12i\n\x1astate_transition_finalized\x18\x02 \x01(\x0b\x32\x43.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalizedH\x00\x12I\n\tkeepalive\x18\x03 \x01(\x0b\x32\x34.org.dash.platform.dapi.v0.PlatformEventV0.KeepaliveH\x00\x1aO\n\rBlockMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x13\n\x07time_ms\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rblock_id_hash\x18\x03 \x01(\x0c\x1aj\n\x0e\x42lockCommitted\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x10\n\x08tx_count\x18\x02 \x01(\r\x1as\n\x18StateTransitionFinalized\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x0f\n\x07tx_hash\x18\x02 \x01(\x0c\x1a\x0b\n\tKeepaliveB\x07\n\x05\x65vent\"\x81\x01\n\x05Proof\x12\x15\n\rgrovedb_proof\x18\x01 \x01(\x0c\x12\x13\n\x0bquorum_hash\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\r\n\x05round\x18\x04 \x01(\r\x12\x15\n\rblock_id_hash\x18\x05 \x01(\x0c\x12\x13\n\x0bquorum_type\x18\x06 \x01(\r\"\x98\x01\n\x10ResponseMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12 \n\x18\x63ore_chain_locked_height\x18\x02 \x01(\r\x12\r\n\x05\x65poch\x18\x03 \x01(\r\x12\x13\n\x07time_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x18\n\x10protocol_version\x18\x05 \x01(\r\x12\x10\n\x08\x63hain_id\x18\x06 \x01(\t\"L\n\x1dStateTransitionBroadcastError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\";\n\x1f\x42roadcastStateTransitionRequest\x12\x18\n\x10state_transition\x18\x01 \x01(\x0c\"\"\n BroadcastStateTransitionResponse\"\xa4\x01\n\x12GetIdentityRequest\x12P\n\x02v0\x18\x01 \x01(\x0b\x32\x42.org.dash.platform.dapi.v0.GetIdentityRequest.GetIdentityRequestV0H\x00\x1a\x31\n\x14GetIdentityRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xc1\x01\n\x17GetIdentityNonceRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityNonceRequest.GetIdentityNonceRequestV0H\x00\x1a?\n\x19GetIdentityNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xf6\x01\n\x1fGetIdentityContractNonceRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest.GetIdentityContractNonceRequestV0H\x00\x1a\\\n!GetIdentityContractNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xc0\x01\n\x19GetIdentityBalanceRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetIdentityBalanceRequest.GetIdentityBalanceRequestV0H\x00\x1a\x38\n\x1bGetIdentityBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xec\x01\n$GetIdentityBalanceAndRevisionRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest.GetIdentityBalanceAndRevisionRequestV0H\x00\x1a\x43\n&GetIdentityBalanceAndRevisionRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9e\x02\n\x13GetIdentityResponse\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetIdentityResponse.GetIdentityResponseV0H\x00\x1a\xa7\x01\n\x15GetIdentityResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbc\x02\n\x18GetIdentityNonceResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetIdentityNonceResponse.GetIdentityNonceResponseV0H\x00\x1a\xb6\x01\n\x1aGetIdentityNonceResponseV0\x12\x1c\n\x0eidentity_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xe5\x02\n GetIdentityContractNonceResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse.GetIdentityContractNonceResponseV0H\x00\x1a\xc7\x01\n\"GetIdentityContractNonceResponseV0\x12%\n\x17identity_contract_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n\x1aGetIdentityBalanceResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetIdentityBalanceResponse.GetIdentityBalanceResponseV0H\x00\x1a\xb1\x01\n\x1cGetIdentityBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb1\x04\n%GetIdentityBalanceAndRevisionResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0H\x00\x1a\x84\x03\n\'GetIdentityBalanceAndRevisionResponseV0\x12\x9b\x01\n\x14\x62\x61lance_and_revision\x18\x01 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0.BalanceAndRevisionH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x12\x42\x61lanceAndRevision\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x14\n\x08revision\x18\x02 \x01(\x04\x42\x02\x30\x01\x42\x08\n\x06resultB\t\n\x07version\"\xd1\x01\n\x0eKeyRequestType\x12\x36\n\x08\x61ll_keys\x18\x01 \x01(\x0b\x32\".org.dash.platform.dapi.v0.AllKeysH\x00\x12@\n\rspecific_keys\x18\x02 \x01(\x0b\x32\'.org.dash.platform.dapi.v0.SpecificKeysH\x00\x12:\n\nsearch_key\x18\x03 \x01(\x0b\x32$.org.dash.platform.dapi.v0.SearchKeyH\x00\x42\t\n\x07request\"\t\n\x07\x41llKeys\"\x1f\n\x0cSpecificKeys\x12\x0f\n\x07key_ids\x18\x01 \x03(\r\"\xb6\x01\n\tSearchKey\x12I\n\x0bpurpose_map\x18\x01 \x03(\x0b\x32\x34.org.dash.platform.dapi.v0.SearchKey.PurposeMapEntry\x1a^\n\x0fPurposeMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.org.dash.platform.dapi.v0.SecurityLevelMap:\x02\x38\x01\"\xbf\x02\n\x10SecurityLevelMap\x12]\n\x12security_level_map\x18\x01 \x03(\x0b\x32\x41.org.dash.platform.dapi.v0.SecurityLevelMap.SecurityLevelMapEntry\x1aw\n\x15SecurityLevelMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12M\n\x05value\x18\x02 \x01(\x0e\x32>.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType:\x02\x38\x01\"S\n\x12KeyKindRequestType\x12\x1f\n\x1b\x43URRENT_KEY_OF_KIND_REQUEST\x10\x00\x12\x1c\n\x18\x41LL_KEYS_OF_KIND_REQUEST\x10\x01\"\xda\x02\n\x16GetIdentityKeysRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetIdentityKeysRequest.GetIdentityKeysRequestV0H\x00\x1a\xda\x01\n\x18GetIdentityKeysRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12?\n\x0crequest_type\x18\x02 \x01(\x0b\x32).org.dash.platform.dapi.v0.KeyRequestType\x12+\n\x05limit\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\x99\x03\n\x17GetIdentityKeysResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0H\x00\x1a\x96\x02\n\x19GetIdentityKeysResponseV0\x12\x61\n\x04keys\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0.KeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1a\n\x04Keys\x12\x12\n\nkeys_bytes\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xef\x02\n GetIdentitiesContractKeysRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest.GetIdentitiesContractKeysRequestV0H\x00\x1a\xd1\x01\n\"GetIdentitiesContractKeysRequestV0\x12\x16\n\x0eidentities_ids\x18\x01 \x03(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\x1f\n\x12\x64ocument_type_name\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x08purposes\x18\x04 \x03(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x15\n\x13_document_type_nameB\t\n\x07version\"\xdf\x06\n!GetIdentitiesContractKeysResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0H\x00\x1a\xbe\x05\n#GetIdentitiesContractKeysResponseV0\x12\x8a\x01\n\x0fidentities_keys\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentitiesKeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aY\n\x0bPurposeKeys\x12\x36\n\x07purpose\x18\x01 \x01(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\x12\n\nkeys_bytes\x18\x02 \x03(\x0c\x1a\x9f\x01\n\x0cIdentityKeys\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12z\n\x04keys\x18\x02 \x03(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.PurposeKeys\x1a\x90\x01\n\x0eIdentitiesKeys\x12~\n\x07\x65ntries\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentityKeysB\x08\n\x06resultB\t\n\x07version\"\xa4\x02\n*GetEvonodesProposedEpochBlocksByIdsRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest.GetEvonodesProposedEpochBlocksByIdsRequestV0H\x00\x1ah\n,GetEvonodesProposedEpochBlocksByIdsRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0b\n\x03ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x08\n\x06_epochB\t\n\x07version\"\x92\x06\n&GetEvonodesProposedEpochBlocksResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0H\x00\x1a\xe2\x04\n(GetEvonodesProposedEpochBlocksResponseV0\x12\xb1\x01\n#evonodes_proposed_block_counts_info\x18\x01 \x01(\x0b\x32\x81\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodesProposedBlocksH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x15\x45vonodeProposedBlocks\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x11\n\x05\x63ount\x18\x02 \x01(\x04\x42\x02\x30\x01\x1a\xc4\x01\n\x16\x45vonodesProposedBlocks\x12\xa9\x01\n\x1e\x65vonodes_proposed_block_counts\x18\x01 \x03(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodeProposedBlocksB\x08\n\x06resultB\t\n\x07version\"\xf2\x02\n,GetEvonodesProposedEpochBlocksByRangeRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest.GetEvonodesProposedEpochBlocksByRangeRequestV0H\x00\x1a\xaf\x01\n.GetEvonodesProposedEpochBlocksByRangeRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x02 \x01(\rH\x02\x88\x01\x01\x12\x15\n\x0bstart_after\x18\x03 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x04 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x07\n\x05startB\x08\n\x06_epochB\x08\n\x06_limitB\t\n\x07version\"\xcd\x01\n\x1cGetIdentitiesBalancesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest.GetIdentitiesBalancesRequestV0H\x00\x1a<\n\x1eGetIdentitiesBalancesRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9f\x05\n\x1dGetIdentitiesBalancesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0H\x00\x1a\x8a\x04\n\x1fGetIdentitiesBalancesResponseV0\x12\x8a\x01\n\x13identities_balances\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentitiesBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aL\n\x0fIdentityBalance\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x8f\x01\n\x12IdentitiesBalances\x12y\n\x07\x65ntries\x18\x01 \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentityBalanceB\x08\n\x06resultB\t\n\x07version\"\xb4\x01\n\x16GetDataContractRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetDataContractRequest.GetDataContractRequestV0H\x00\x1a\x35\n\x18GetDataContractRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xb3\x02\n\x17GetDataContractResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractResponse.GetDataContractResponseV0H\x00\x1a\xb0\x01\n\x19GetDataContractResponseV0\x12\x17\n\rdata_contract\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb9\x01\n\x17GetDataContractsRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractsRequest.GetDataContractsRequestV0H\x00\x1a\x37\n\x19GetDataContractsRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xcf\x04\n\x18GetDataContractsResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetDataContractsResponse.GetDataContractsResponseV0H\x00\x1a[\n\x11\x44\x61taContractEntry\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x32\n\rdata_contract\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x1au\n\rDataContracts\x12\x64\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32\x45.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractEntry\x1a\xf5\x01\n\x1aGetDataContractsResponseV0\x12[\n\x0e\x64\x61ta_contracts\x18\x01 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc5\x02\n\x1dGetDataContractHistoryRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetDataContractHistoryRequest.GetDataContractHistoryRequestV0H\x00\x1a\xb0\x01\n\x1fGetDataContractHistoryRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0bstart_at_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xb2\x05\n\x1eGetDataContractHistoryResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0H\x00\x1a\x9a\x04\n GetDataContractHistoryResponseV0\x12\x8f\x01\n\x15\x64\x61ta_contract_history\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a;\n\x18\x44\x61taContractHistoryEntry\x12\x10\n\x04\x64\x61te\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05value\x18\x02 \x01(\x0c\x1a\xaa\x01\n\x13\x44\x61taContractHistory\x12\x92\x01\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32s.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryEntryB\x08\n\x06resultB\t\n\x07version\"\xb2\x02\n\x13GetDocumentsRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetDocumentsRequest.GetDocumentsRequestV0H\x00\x1a\xbb\x01\n\x15GetDocumentsRequestV0\x12\x18\n\x10\x64\x61ta_contract_id\x18\x01 \x01(\x0c\x12\x15\n\rdocument_type\x18\x02 \x01(\t\x12\r\n\x05where\x18\x03 \x01(\x0c\x12\x10\n\x08order_by\x18\x04 \x01(\x0c\x12\r\n\x05limit\x18\x05 \x01(\r\x12\x15\n\x0bstart_after\x18\x06 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x07 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x08 \x01(\x08\x42\x07\n\x05startB\t\n\x07version\"\x95\x03\n\x14GetDocumentsResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0H\x00\x1a\x9b\x02\n\x16GetDocumentsResponseV0\x12\x65\n\tdocuments\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0.DocumentsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1e\n\tDocuments\x12\x11\n\tdocuments\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xed\x01\n!GetIdentityByPublicKeyHashRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest.GetIdentityByPublicKeyHashRequestV0H\x00\x1aM\n#GetIdentityByPublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xda\x02\n\"GetIdentityByPublicKeyHashResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse.GetIdentityByPublicKeyHashResponseV0H\x00\x1a\xb6\x01\n$GetIdentityByPublicKeyHashResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n*GetIdentityByNonUniquePublicKeyHashRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest.GetIdentityByNonUniquePublicKeyHashRequestV0H\x00\x1a\x80\x01\n,GetIdentityByNonUniquePublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\x18\n\x0bstart_after\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x0e\n\x0c_start_afterB\t\n\x07version\"\xd6\x06\n+GetIdentityByNonUniquePublicKeyHashResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0H\x00\x1a\x96\x05\n-GetIdentityByNonUniquePublicKeyHashResponseV0\x12\x9a\x01\n\x08identity\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityResponseH\x00\x12\x9d\x01\n\x05proof\x18\x02 \x01(\x0b\x32\x8b\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityProvedResponseH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x36\n\x10IdentityResponse\x12\x15\n\x08identity\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x0b\n\t_identity\x1a\xa6\x01\n\x16IdentityProvedResponse\x12P\n&grovedb_identity_public_key_hash_proof\x18\x01 \x01(\x0b\x32 .org.dash.platform.dapi.v0.Proof\x12!\n\x14identity_proof_bytes\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x17\n\x15_identity_proof_bytesB\x08\n\x06resultB\t\n\x07version\"\xfb\x01\n#WaitForStateTransitionResultRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0H\x00\x1aU\n%WaitForStateTransitionResultRequestV0\x12\x1d\n\x15state_transition_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x99\x03\n$WaitForStateTransitionResultResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0H\x00\x1a\xef\x01\n&WaitForStateTransitionResultResponseV0\x12I\n\x05\x65rror\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.StateTransitionBroadcastErrorH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x19GetConsensusParamsRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetConsensusParamsRequest.GetConsensusParamsRequestV0H\x00\x1a<\n\x1bGetConsensusParamsRequestV0\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9c\x04\n\x1aGetConsensusParamsResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetConsensusParamsResponse.GetConsensusParamsResponseV0H\x00\x1aP\n\x14\x43onsensusParamsBlock\x12\x11\n\tmax_bytes\x18\x01 \x01(\t\x12\x0f\n\x07max_gas\x18\x02 \x01(\t\x12\x14\n\x0ctime_iota_ms\x18\x03 \x01(\t\x1a\x62\n\x17\x43onsensusParamsEvidence\x12\x1a\n\x12max_age_num_blocks\x18\x01 \x01(\t\x12\x18\n\x10max_age_duration\x18\x02 \x01(\t\x12\x11\n\tmax_bytes\x18\x03 \x01(\t\x1a\xda\x01\n\x1cGetConsensusParamsResponseV0\x12Y\n\x05\x62lock\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsBlock\x12_\n\x08\x65vidence\x18\x02 \x01(\x0b\x32M.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsEvidenceB\t\n\x07version\"\xe4\x01\n%GetProtocolVersionUpgradeStateRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest.GetProtocolVersionUpgradeStateRequestV0H\x00\x1a\x38\n\'GetProtocolVersionUpgradeStateRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xb5\x05\n&GetProtocolVersionUpgradeStateResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0H\x00\x1a\x85\x04\n(GetProtocolVersionUpgradeStateResponseV0\x12\x87\x01\n\x08versions\x18\x01 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x96\x01\n\x08Versions\x12\x89\x01\n\x08versions\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionEntry\x1a:\n\x0cVersionEntry\x12\x16\n\x0eversion_number\x18\x01 \x01(\r\x12\x12\n\nvote_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xa3\x02\n*GetProtocolVersionUpgradeVoteStatusRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest.GetProtocolVersionUpgradeVoteStatusRequestV0H\x00\x1ag\n,GetProtocolVersionUpgradeVoteStatusRequestV0\x12\x19\n\x11start_pro_tx_hash\x18\x01 \x01(\x0c\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xef\x05\n+GetProtocolVersionUpgradeVoteStatusResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0H\x00\x1a\xaf\x04\n-GetProtocolVersionUpgradeVoteStatusResponseV0\x12\x98\x01\n\x08versions\x18\x01 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignalsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xaf\x01\n\x0eVersionSignals\x12\x9c\x01\n\x0fversion_signals\x18\x01 \x03(\x0b\x32\x82\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignal\x1a\x35\n\rVersionSignal\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07version\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xf5\x01\n\x14GetEpochsInfoRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetEpochsInfoRequest.GetEpochsInfoRequestV0H\x00\x1a|\n\x16GetEpochsInfoRequestV0\x12\x31\n\x0bstart_epoch\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\x11\n\tascending\x18\x03 \x01(\x08\x12\r\n\x05prove\x18\x04 \x01(\x08\x42\t\n\x07version\"\x99\x05\n\x15GetEpochsInfoResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0H\x00\x1a\x9c\x04\n\x17GetEpochsInfoResponseV0\x12\x65\n\x06\x65pochs\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1au\n\nEpochInfos\x12g\n\x0b\x65poch_infos\x18\x01 \x03(\x0b\x32R.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfo\x1a\xa6\x01\n\tEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x16\n\nstart_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xbf\x02\n\x1dGetFinalizedEpochInfosRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest.GetFinalizedEpochInfosRequestV0H\x00\x1a\xaa\x01\n\x1fGetFinalizedEpochInfosRequestV0\x12\x19\n\x11start_epoch_index\x18\x01 \x01(\r\x12\"\n\x1astart_epoch_index_included\x18\x02 \x01(\x08\x12\x17\n\x0f\x65nd_epoch_index\x18\x03 \x01(\r\x12 \n\x18\x65nd_epoch_index_included\x18\x04 \x01(\x08\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xbd\t\n\x1eGetFinalizedEpochInfosResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0H\x00\x1a\xa5\x08\n GetFinalizedEpochInfosResponseV0\x12\x80\x01\n\x06\x65pochs\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xa4\x01\n\x13\x46inalizedEpochInfos\x12\x8c\x01\n\x15\x66inalized_epoch_infos\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfo\x1a\x9f\x04\n\x12\x46inalizedEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x1c\n\x10\x66irst_block_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\r\x12!\n\x15total_blocks_in_epoch\x18\x07 \x01(\x04\x42\x02\x30\x01\x12*\n\"next_epoch_start_core_block_height\x18\x08 \x01(\r\x12!\n\x15total_processing_fees\x18\t \x01(\x04\x42\x02\x30\x01\x12*\n\x1etotal_distributed_storage_fees\x18\n \x01(\x04\x42\x02\x30\x01\x12&\n\x1atotal_created_storage_fees\x18\x0b \x01(\x04\x42\x02\x30\x01\x12\x1e\n\x12\x63ore_block_rewards\x18\x0c \x01(\x04\x42\x02\x30\x01\x12\x81\x01\n\x0f\x62lock_proposers\x18\r \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.BlockProposer\x1a\x39\n\rBlockProposer\x12\x13\n\x0bproposer_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x62lock_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xde\x04\n\x1cGetContestedResourcesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0H\x00\x1a\xcc\x03\n\x1eGetContestedResourcesRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x1a\n\x12start_index_values\x18\x04 \x03(\x0c\x12\x18\n\x10\x65nd_index_values\x18\x05 \x03(\x0c\x12\x89\x01\n\x13start_at_value_info\x18\x06 \x01(\x0b\x32g.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0.StartAtValueInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1a\x45\n\x10StartAtValueInfo\x12\x13\n\x0bstart_value\x18\x01 \x01(\x0c\x12\x1c\n\x14start_value_included\x18\x02 \x01(\x08\x42\x16\n\x14_start_at_value_infoB\x08\n\x06_countB\t\n\x07version\"\x88\x04\n\x1dGetContestedResourcesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0H\x00\x1a\xf3\x02\n\x1fGetContestedResourcesResponseV0\x12\x95\x01\n\x19\x63ontested_resource_values\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0.ContestedResourceValuesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a<\n\x17\x43ontestedResourceValues\x12!\n\x19\x63ontested_resource_values\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x05\n\x1cGetVotePollsByEndDateRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0H\x00\x1a\xc0\x04\n\x1eGetVotePollsByEndDateRequestV0\x12\x84\x01\n\x0fstart_time_info\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.StartAtTimeInfoH\x00\x88\x01\x01\x12\x80\x01\n\rend_time_info\x18\x02 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.EndAtTimeInfoH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x11\n\tascending\x18\x05 \x01(\x08\x12\r\n\x05prove\x18\x06 \x01(\x08\x1aI\n\x0fStartAtTimeInfo\x12\x19\n\rstart_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13start_time_included\x18\x02 \x01(\x08\x1a\x43\n\rEndAtTimeInfo\x12\x17\n\x0b\x65nd_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x65nd_time_included\x18\x02 \x01(\x08\x42\x12\n\x10_start_time_infoB\x10\n\x0e_end_time_infoB\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07version\"\x83\x06\n\x1dGetVotePollsByEndDateResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0H\x00\x1a\xee\x04\n\x1fGetVotePollsByEndDateResponseV0\x12\x9c\x01\n\x18vote_polls_by_timestamps\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestampsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aV\n\x1eSerializedVotePollsByTimestamp\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x15serialized_vote_polls\x18\x02 \x03(\x0c\x1a\xd7\x01\n\x1fSerializedVotePollsByTimestamps\x12\x99\x01\n\x18vote_polls_by_timestamps\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestamp\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xff\x06\n$GetContestedResourceVoteStateRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0H\x00\x1a\xd5\x05\n&GetContestedResourceVoteStateRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x86\x01\n\x0bresult_type\x18\x05 \x01(\x0e\x32q.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.ResultType\x12\x36\n.allow_include_locked_and_abstaining_vote_tally\x18\x06 \x01(\x08\x12\xa3\x01\n\x18start_at_identifier_info\x18\x07 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x08 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\"I\n\nResultType\x12\r\n\tDOCUMENTS\x10\x00\x12\x0e\n\nVOTE_TALLY\x10\x01\x12\x1c\n\x18\x44OCUMENTS_AND_VOTE_TALLY\x10\x02\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\x94\x0c\n%GetContestedResourceVoteStateResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0H\x00\x1a\xe7\n\n\'GetContestedResourceVoteStateResponseV0\x12\xae\x01\n\x1d\x63ontested_resource_contenders\x18\x01 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.ContestedResourceContendersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xda\x03\n\x10\x46inishedVoteInfo\x12\xad\x01\n\x15\x66inished_vote_outcome\x18\x01 \x01(\x0e\x32\x8d\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfo.FinishedVoteOutcome\x12\x1f\n\x12won_by_identity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12$\n\x18\x66inished_at_block_height\x18\x03 \x01(\x04\x42\x02\x30\x01\x12%\n\x1d\x66inished_at_core_block_height\x18\x04 \x01(\r\x12%\n\x19\x66inished_at_block_time_ms\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x66inished_at_epoch\x18\x06 \x01(\r\"O\n\x13\x46inishedVoteOutcome\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\n\n\x06LOCKED\x10\x01\x12\x16\n\x12NO_PREVIOUS_WINNER\x10\x02\x42\x15\n\x13_won_by_identity_id\x1a\xc4\x03\n\x1b\x43ontestedResourceContenders\x12\x86\x01\n\ncontenders\x18\x01 \x03(\x0b\x32r.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.Contender\x12\x1f\n\x12\x61\x62stain_vote_tally\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0flock_vote_tally\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x9a\x01\n\x12\x66inished_vote_info\x18\x04 \x01(\x0b\x32y.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfoH\x02\x88\x01\x01\x42\x15\n\x13_abstain_vote_tallyB\x12\n\x10_lock_vote_tallyB\x15\n\x13_finished_vote_info\x1ak\n\tContender\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x17\n\nvote_count\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08\x64ocument\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x42\r\n\x0b_vote_countB\x0b\n\t_documentB\x08\n\x06resultB\t\n\x07version\"\xd5\x05\n,GetContestedResourceVotersForIdentityRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0H\x00\x1a\x92\x04\n.GetContestedResourceVotersForIdentityRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x15\n\rcontestant_id\x18\x05 \x01(\x0c\x12\xb4\x01\n\x18start_at_identifier_info\x18\x06 \x01(\x0b\x32\x8c\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\xf1\x04\n-GetContestedResourceVotersForIdentityResponse\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0H\x00\x1a\xab\x03\n/GetContestedResourceVotersForIdentityResponseV0\x12\xb6\x01\n\x19\x63ontested_resource_voters\x18\x01 \x01(\x0b\x32\x90\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0.ContestedResourceVotersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x43\n\x17\x43ontestedResourceVoters\x12\x0e\n\x06voters\x18\x01 \x03(\x0c\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xad\x05\n(GetContestedResourceIdentityVotesRequest\x12|\n\x02v0\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0H\x00\x1a\xf7\x03\n*GetContestedResourceIdentityVotesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0forder_ascending\x18\x04 \x01(\x08\x12\xae\x01\n\x1astart_at_vote_poll_id_info\x18\x05 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0.StartAtVotePollIdInfoH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x1a\x61\n\x15StartAtVotePollIdInfo\x12 \n\x18start_at_poll_identifier\x18\x01 \x01(\x0c\x12&\n\x1estart_poll_identifier_included\x18\x02 \x01(\x08\x42\x1d\n\x1b_start_at_vote_poll_id_infoB\t\n\x07version\"\xc8\n\n)GetContestedResourceIdentityVotesResponse\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0H\x00\x1a\x8f\t\n+GetContestedResourceIdentityVotesResponseV0\x12\xa1\x01\n\x05votes\x18\x01 \x01(\x0b\x32\x8f\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVotesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xf7\x01\n\x1e\x43ontestedResourceIdentityVotes\x12\xba\x01\n!contested_resource_identity_votes\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVote\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x1a\xad\x02\n\x12ResourceVoteChoice\x12\xad\x01\n\x10vote_choice_type\x18\x01 \x01(\x0e\x32\x92\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoice.VoteChoiceType\x12\x18\n\x0bidentity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\"=\n\x0eVoteChoiceType\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\x0b\n\x07\x41\x42STAIN\x10\x01\x12\x08\n\x04LOCK\x10\x02\x42\x0e\n\x0c_identity_id\x1a\x95\x02\n\x1d\x43ontestedResourceIdentityVote\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\'\n\x1fserialized_index_storage_values\x18\x03 \x03(\x0c\x12\x99\x01\n\x0bvote_choice\x18\x04 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoiceB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n%GetPrefundedSpecializedBalanceRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest.GetPrefundedSpecializedBalanceRequestV0H\x00\x1a\x44\n\'GetPrefundedSpecializedBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xed\x02\n&GetPrefundedSpecializedBalanceResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse.GetPrefundedSpecializedBalanceResponseV0H\x00\x1a\xbd\x01\n(GetPrefundedSpecializedBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xd0\x01\n GetTotalCreditsInPlatformRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest.GetTotalCreditsInPlatformRequestV0H\x00\x1a\x33\n\"GetTotalCreditsInPlatformRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xd9\x02\n!GetTotalCreditsInPlatformResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse.GetTotalCreditsInPlatformResponseV0H\x00\x1a\xb8\x01\n#GetTotalCreditsInPlatformResponseV0\x12\x15\n\x07\x63redits\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x16GetPathElementsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetPathElementsRequest.GetPathElementsRequestV0H\x00\x1a\x45\n\x18GetPathElementsRequestV0\x12\x0c\n\x04path\x18\x01 \x03(\x0c\x12\x0c\n\x04keys\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xa3\x03\n\x17GetPathElementsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0H\x00\x1a\xa0\x02\n\x19GetPathElementsResponseV0\x12i\n\x08\x65lements\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0.ElementsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1c\n\x08\x45lements\x12\x10\n\x08\x65lements\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\x81\x01\n\x10GetStatusRequest\x12L\n\x02v0\x18\x01 \x01(\x0b\x32>.org.dash.platform.dapi.v0.GetStatusRequest.GetStatusRequestV0H\x00\x1a\x14\n\x12GetStatusRequestV0B\t\n\x07version\"\xd0\x10\n\x11GetStatusResponse\x12N\n\x02v0\x18\x01 \x01(\x0b\x32@.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0H\x00\x1a\xdf\x0f\n\x13GetStatusResponseV0\x12Y\n\x07version\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version\x12S\n\x04node\x18\x02 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Node\x12U\n\x05\x63hain\x18\x03 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Chain\x12Y\n\x07network\x18\x04 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Network\x12^\n\nstate_sync\x18\x05 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.StateSync\x12S\n\x04time\x18\x06 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Time\x1a\xee\x04\n\x07Version\x12\x63\n\x08software\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Software\x12\x63\n\x08protocol\x18\x02 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol\x1a^\n\x08Software\x12\x0c\n\x04\x64\x61pi\x18\x01 \x01(\t\x12\x12\n\x05\x64rive\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ntenderdash\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_driveB\r\n\x0b_tenderdash\x1a\xb8\x02\n\x08Protocol\x12p\n\ntenderdash\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Tenderdash\x12\x66\n\x05\x64rive\x18\x02 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Drive\x1a(\n\nTenderdash\x12\x0b\n\x03p2p\x18\x01 \x01(\r\x12\r\n\x05\x62lock\x18\x02 \x01(\r\x1a(\n\x05\x44rive\x12\x0e\n\x06latest\x18\x03 \x01(\r\x12\x0f\n\x07\x63urrent\x18\x04 \x01(\r\x1a\x7f\n\x04Time\x12\x11\n\x05local\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x05\x62lock\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x12\x18\n\x07genesis\x18\x03 \x01(\x04\x42\x02\x30\x01H\x01\x88\x01\x01\x12\x12\n\x05\x65poch\x18\x04 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_blockB\n\n\x08_genesisB\x08\n\x06_epoch\x1a<\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x18\n\x0bpro_tx_hash\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x0e\n\x0c_pro_tx_hash\x1a\xb3\x02\n\x05\x43hain\x12\x13\n\x0b\x63\x61tching_up\x18\x01 \x01(\x08\x12\x19\n\x11latest_block_hash\x18\x02 \x01(\x0c\x12\x17\n\x0flatest_app_hash\x18\x03 \x01(\x0c\x12\x1f\n\x13latest_block_height\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13\x65\x61rliest_block_hash\x18\x05 \x01(\x0c\x12\x19\n\x11\x65\x61rliest_app_hash\x18\x06 \x01(\x0c\x12!\n\x15\x65\x61rliest_block_height\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15max_peer_block_height\x18\t \x01(\x04\x42\x02\x30\x01\x12%\n\x18\x63ore_chain_locked_height\x18\n \x01(\rH\x00\x88\x01\x01\x42\x1b\n\x19_core_chain_locked_height\x1a\x43\n\x07Network\x12\x10\n\x08\x63hain_id\x18\x01 \x01(\t\x12\x13\n\x0bpeers_count\x18\x02 \x01(\r\x12\x11\n\tlistening\x18\x03 \x01(\x08\x1a\x85\x02\n\tStateSync\x12\x1d\n\x11total_synced_time\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1a\n\x0eremaining_time\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0ftotal_snapshots\x18\x03 \x01(\r\x12\"\n\x16\x63hunk_process_avg_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x0fsnapshot_height\x18\x05 \x01(\x04\x42\x02\x30\x01\x12!\n\x15snapshot_chunks_count\x18\x06 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x11\x62\x61\x63kfilled_blocks\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15\x62\x61\x63kfill_blocks_total\x18\x08 \x01(\x04\x42\x02\x30\x01\x42\t\n\x07version\"\xb1\x01\n\x1cGetCurrentQuorumsInfoRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest.GetCurrentQuorumsInfoRequestV0H\x00\x1a \n\x1eGetCurrentQuorumsInfoRequestV0B\t\n\x07version\"\xa1\x05\n\x1dGetCurrentQuorumsInfoResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.GetCurrentQuorumsInfoResponseV0H\x00\x1a\x46\n\x0bValidatorV0\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07node_ip\x18\x02 \x01(\t\x12\x11\n\tis_banned\x18\x03 \x01(\x08\x1a\xaf\x01\n\x0eValidatorSetV0\x12\x13\n\x0bquorum_hash\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ore_height\x18\x02 \x01(\r\x12U\n\x07members\x18\x03 \x03(\x0b\x32\x44.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorV0\x12\x1c\n\x14threshold_public_key\x18\x04 \x01(\x0c\x1a\x92\x02\n\x1fGetCurrentQuorumsInfoResponseV0\x12\x15\n\rquorum_hashes\x18\x01 \x03(\x0c\x12\x1b\n\x13\x63urrent_quorum_hash\x18\x02 \x01(\x0c\x12_\n\x0evalidator_sets\x18\x03 \x03(\x0b\x32G.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorSetV0\x12\x1b\n\x13last_block_proposer\x18\x04 \x01(\x0c\x12=\n\x08metadata\x18\x05 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\t\n\x07version\"\xf4\x01\n\x1fGetIdentityTokenBalancesRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest.GetIdentityTokenBalancesRequestV0H\x00\x1aZ\n!GetIdentityTokenBalancesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xad\x05\n GetIdentityTokenBalancesResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0H\x00\x1a\x8f\x04\n\"GetIdentityTokenBalancesResponseV0\x12\x86\x01\n\x0etoken_balances\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aG\n\x11TokenBalanceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x9a\x01\n\rTokenBalances\x12\x88\x01\n\x0etoken_balances\x18\x01 \x03(\x0b\x32p.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xfc\x01\n!GetIdentitiesTokenBalancesRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest.GetIdentitiesTokenBalancesRequestV0H\x00\x1a\\\n#GetIdentitiesTokenBalancesRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xf2\x05\n\"GetIdentitiesTokenBalancesResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0H\x00\x1a\xce\x04\n$GetIdentitiesTokenBalancesResponseV0\x12\x9b\x01\n\x17identity_token_balances\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aR\n\x19IdentityTokenBalanceEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\xb7\x01\n\x15IdentityTokenBalances\x12\x9d\x01\n\x17identity_token_balances\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xe8\x01\n\x1cGetIdentityTokenInfosRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest.GetIdentityTokenInfosRequestV0H\x00\x1aW\n\x1eGetIdentityTokenInfosRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\x98\x06\n\x1dGetIdentityTokenInfosResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0H\x00\x1a\x83\x05\n\x1fGetIdentityTokenInfosResponseV0\x12z\n\x0btoken_infos\x18\x01 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb0\x01\n\x0eTokenInfoEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x82\x01\n\x04info\x18\x02 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x8a\x01\n\nTokenInfos\x12|\n\x0btoken_infos\x18\x01 \x03(\x0b\x32g.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n\x1eGetIdentitiesTokenInfosRequest\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest.GetIdentitiesTokenInfosRequestV0H\x00\x1aY\n GetIdentitiesTokenInfosRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xca\x06\n\x1fGetIdentitiesTokenInfosResponse\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0H\x00\x1a\xaf\x05\n!GetIdentitiesTokenInfosResponseV0\x12\x8f\x01\n\x14identity_token_infos\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.IdentityTokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb7\x01\n\x0eTokenInfoEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x86\x01\n\x04info\x18\x02 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x97\x01\n\x12IdentityTokenInfos\x12\x80\x01\n\x0btoken_infos\x18\x01 \x03(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbf\x01\n\x17GetTokenStatusesRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetTokenStatusesRequest.GetTokenStatusesRequestV0H\x00\x1a=\n\x19GetTokenStatusesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xe7\x04\n\x18GetTokenStatusesResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0H\x00\x1a\xe1\x03\n\x1aGetTokenStatusesResponseV0\x12v\n\x0etoken_statuses\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x44\n\x10TokenStatusEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x13\n\x06paused\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_paused\x1a\x88\x01\n\rTokenStatuses\x12w\n\x0etoken_statuses\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusEntryB\x08\n\x06resultB\t\n\x07version\"\xef\x01\n#GetTokenDirectPurchasePricesRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest.GetTokenDirectPurchasePricesRequestV0H\x00\x1aI\n%GetTokenDirectPurchasePricesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x8b\t\n$GetTokenDirectPurchasePricesResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0H\x00\x1a\xe1\x07\n&GetTokenDirectPurchasePricesResponseV0\x12\xa9\x01\n\x1ctoken_direct_purchase_prices\x18\x01 \x01(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePricesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xa7\x01\n\x0fPricingSchedule\x12\x93\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PriceForQuantity\x1a\xe4\x01\n\x1dTokenDirectPurchasePriceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x15\n\x0b\x66ixed_price\x18\x02 \x01(\x04H\x00\x12\x90\x01\n\x0evariable_price\x18\x03 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PricingScheduleH\x00\x42\x07\n\x05price\x1a\xc8\x01\n\x19TokenDirectPurchasePrices\x12\xaa\x01\n\x1btoken_direct_purchase_price\x18\x01 \x03(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePriceEntryB\x08\n\x06resultB\t\n\x07version\"\xce\x01\n\x1bGetTokenContractInfoRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenContractInfoRequest.GetTokenContractInfoRequestV0H\x00\x1a@\n\x1dGetTokenContractInfoRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xfb\x03\n\x1cGetTokenContractInfoResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0H\x00\x1a\xe9\x02\n\x1eGetTokenContractInfoResponseV0\x12|\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0.TokenContractInfoDataH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aM\n\x15TokenContractInfoData\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xef\x04\n)GetTokenPreProgrammedDistributionsRequest\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0H\x00\x1a\xb6\x03\n+GetTokenPreProgrammedDistributionsRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x98\x01\n\rstart_at_info\x18\x02 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0.StartAtInfoH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x1a\x9a\x01\n\x0bStartAtInfo\x12\x15\n\rstart_time_ms\x18\x01 \x01(\x04\x12\x1c\n\x0fstart_recipient\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12%\n\x18start_recipient_included\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_start_recipientB\x1b\n\x19_start_recipient_includedB\x10\n\x0e_start_at_infoB\x08\n\x06_limitB\t\n\x07version\"\xec\x07\n*GetTokenPreProgrammedDistributionsResponse\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0H\x00\x1a\xaf\x06\n,GetTokenPreProgrammedDistributionsResponseV0\x12\xa5\x01\n\x13token_distributions\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a>\n\x16TokenDistributionEntry\x12\x14\n\x0crecipient_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x1a\xd4\x01\n\x1bTokenTimedDistributionEntry\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\xa1\x01\n\rdistributions\x18\x02 \x03(\x0b\x32\x89\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionEntry\x1a\xc3\x01\n\x12TokenDistributions\x12\xac\x01\n\x13token_distributions\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenTimedDistributionEntryB\x08\n\x06resultB\t\n\x07version\"\x82\x04\n-GetTokenPerpetualDistributionLastClaimRequest\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.GetTokenPerpetualDistributionLastClaimRequestV0H\x00\x1aI\n\x11\x43ontractTokenInfo\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\r\x1a\xf1\x01\n/GetTokenPerpetualDistributionLastClaimRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12v\n\rcontract_info\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.ContractTokenInfoH\x00\x88\x01\x01\x12\x13\n\x0bidentity_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x10\n\x0e_contract_infoB\t\n\x07version\"\x93\x05\n.GetTokenPerpetualDistributionLastClaimResponse\x12\x88\x01\n\x02v0\x18\x01 \x01(\x0b\x32z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0H\x00\x1a\xca\x03\n0GetTokenPerpetualDistributionLastClaimResponseV0\x12\x9f\x01\n\nlast_claim\x18\x01 \x01(\x0b\x32\x88\x01.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0.LastClaimInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\rLastClaimInfo\x12\x1a\n\x0ctimestamp_ms\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x1a\n\x0c\x62lock_height\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x12\x0f\n\x05\x65poch\x18\x03 \x01(\rH\x00\x12\x13\n\traw_bytes\x18\x04 \x01(\x0cH\x00\x42\t\n\x07paid_atB\x08\n\x06resultB\t\n\x07version\"\xca\x01\n\x1aGetTokenTotalSupplyRequest\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest.GetTokenTotalSupplyRequestV0H\x00\x1a?\n\x1cGetTokenTotalSupplyRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xaf\x04\n\x1bGetTokenTotalSupplyResponse\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0H\x00\x1a\xa0\x03\n\x1dGetTokenTotalSupplyResponseV0\x12\x88\x01\n\x12token_total_supply\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0.TokenTotalSupplyEntryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\x15TokenTotalSupplyEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x30\n(total_aggregated_amount_in_user_accounts\x18\x02 \x01(\x04\x12\x1b\n\x13total_system_amount\x18\x03 \x01(\x04\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x01\n\x13GetGroupInfoRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetGroupInfoRequest.GetGroupInfoRequestV0H\x00\x1a\\\n\x15GetGroupInfoRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xd4\x05\n\x14GetGroupInfoResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0H\x00\x1a\xda\x04\n\x16GetGroupInfoResponseV0\x12\x66\n\ngroup_info\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x98\x01\n\x0eGroupInfoEntry\x12h\n\x07members\x18\x01 \x03(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x02 \x01(\r\x1a\x8a\x01\n\tGroupInfo\x12n\n\ngroup_info\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoEntryH\x00\x88\x01\x01\x42\r\n\x0b_group_infoB\x08\n\x06resultB\t\n\x07version\"\xed\x03\n\x14GetGroupInfosRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfosRequest.GetGroupInfosRequestV0H\x00\x1au\n\x1cStartAtGroupContractPosition\x12%\n\x1dstart_group_contract_position\x18\x01 \x01(\r\x12.\n&start_group_contract_position_included\x18\x02 \x01(\x08\x1a\xfc\x01\n\x16GetGroupInfosRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12{\n start_at_group_contract_position\x18\x02 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupInfosRequest.StartAtGroupContractPositionH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x42#\n!_start_at_group_contract_positionB\x08\n\x06_countB\t\n\x07version\"\xff\x05\n\x15GetGroupInfosResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0H\x00\x1a\x82\x05\n\x17GetGroupInfosResponseV0\x12j\n\x0bgroup_infos\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\xc3\x01\n\x16GroupPositionInfoEntry\x12\x1f\n\x17group_contract_position\x18\x01 \x01(\r\x12j\n\x07members\x18\x02 \x03(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x03 \x01(\r\x1a\x82\x01\n\nGroupInfos\x12t\n\x0bgroup_infos\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupPositionInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbe\x04\n\x16GetGroupActionsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetGroupActionsRequest.GetGroupActionsRequestV0H\x00\x1aL\n\x0fStartAtActionId\x12\x17\n\x0fstart_action_id\x18\x01 \x01(\x0c\x12 \n\x18start_action_id_included\x18\x02 \x01(\x08\x1a\xc8\x02\n\x18GetGroupActionsRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12N\n\x06status\x18\x03 \x01(\x0e\x32>.org.dash.platform.dapi.v0.GetGroupActionsRequest.ActionStatus\x12\x62\n\x12start_at_action_id\x18\x04 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetGroupActionsRequest.StartAtActionIdH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x42\x15\n\x13_start_at_action_idB\x08\n\x06_count\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\xd6\x1e\n\x17GetGroupActionsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0H\x00\x1a\xd3\x1d\n\x19GetGroupActionsResponseV0\x12r\n\rgroup_actions\x18\x01 \x01(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a[\n\tMintEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0crecipient_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a[\n\tBurnEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0c\x62urn_from_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aJ\n\x0b\x46reezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aL\n\rUnfreezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x66\n\x17\x44\x65stroyFrozenFundsEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x13SharedEncryptedNote\x12\x18\n\x10sender_key_index\x18\x01 \x01(\r\x12\x1b\n\x13recipient_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a{\n\x15PersonalEncryptedNote\x12!\n\x19root_encryption_key_index\x18\x01 \x01(\r\x12\'\n\x1f\x64\x65rivation_encryption_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a\xe9\x01\n\x14\x45mergencyActionEvent\x12\x81\x01\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32l.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEvent.ActionType\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\"#\n\nActionType\x12\t\n\x05PAUSE\x10\x00\x12\n\n\x06RESUME\x10\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x16TokenConfigUpdateEvent\x12 \n\x18token_config_update_item\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\xe6\x03\n\x1eUpdateDirectPurchasePriceEvent\x12\x15\n\x0b\x66ixed_price\x18\x01 \x01(\x04H\x00\x12\x95\x01\n\x0evariable_price\x18\x02 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PricingScheduleH\x00\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x01\x88\x01\x01\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xac\x01\n\x0fPricingSchedule\x12\x98\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PriceForQuantityB\x07\n\x05priceB\x0e\n\x0c_public_note\x1a\xfc\x02\n\x10GroupActionEvent\x12n\n\x0btoken_event\x18\x01 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenEventH\x00\x12t\n\x0e\x64ocument_event\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentEventH\x00\x12t\n\x0e\x63ontract_event\x18\x03 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractEventH\x00\x42\x0c\n\nevent_type\x1a\x8b\x01\n\rDocumentEvent\x12r\n\x06\x63reate\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentCreateEventH\x00\x42\x06\n\x04type\x1a/\n\x13\x44ocumentCreateEvent\x12\x18\n\x10\x63reated_document\x18\x01 \x01(\x0c\x1a/\n\x13\x43ontractUpdateEvent\x12\x18\n\x10updated_contract\x18\x01 \x01(\x0c\x1a\x8b\x01\n\rContractEvent\x12r\n\x06update\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractUpdateEventH\x00\x42\x06\n\x04type\x1a\xd1\x07\n\nTokenEvent\x12\x66\n\x04mint\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.MintEventH\x00\x12\x66\n\x04\x62urn\x18\x02 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.BurnEventH\x00\x12j\n\x06\x66reeze\x18\x03 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.FreezeEventH\x00\x12n\n\x08unfreeze\x18\x04 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UnfreezeEventH\x00\x12\x84\x01\n\x14\x64\x65stroy_frozen_funds\x18\x05 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DestroyFrozenFundsEventH\x00\x12}\n\x10\x65mergency_action\x18\x06 \x01(\x0b\x32\x61.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEventH\x00\x12\x82\x01\n\x13token_config_update\x18\x07 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenConfigUpdateEventH\x00\x12\x83\x01\n\x0cupdate_price\x18\x08 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEventH\x00\x42\x06\n\x04type\x1a\x93\x01\n\x10GroupActionEntry\x12\x11\n\taction_id\x18\x01 \x01(\x0c\x12l\n\x05\x65vent\x18\x02 \x01(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEvent\x1a\x84\x01\n\x0cGroupActions\x12t\n\rgroup_actions\x18\x01 \x03(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEntryB\x08\n\x06resultB\t\n\x07version\"\x88\x03\n\x1cGetGroupActionSignersRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.GetGroupActionSignersRequestV0H\x00\x1a\xce\x01\n\x1eGetGroupActionSignersRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12T\n\x06status\x18\x03 \x01(\x0e\x32\x44.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.ActionStatus\x12\x11\n\taction_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\x8b\x05\n\x1dGetGroupActionSignersResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0H\x00\x1a\xf6\x03\n\x1fGetGroupActionSignersResponseV0\x12\x8b\x01\n\x14group_action_signers\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x35\n\x11GroupActionSigner\x12\x11\n\tsigner_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x91\x01\n\x12GroupActionSigners\x12{\n\x07signers\x18\x01 \x03(\x0b\x32j.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignerB\x08\n\x06resultB\t\n\x07version*Z\n\nKeyPurpose\x12\x12\n\x0e\x41UTHENTICATION\x10\x00\x12\x0e\n\nENCRYPTION\x10\x01\x12\x0e\n\nDECRYPTION\x10\x02\x12\x0c\n\x08TRANSFER\x10\x03\x12\n\n\x06VOTING\x10\x05\x32\xf4\x36\n\x08Platform\x12\x93\x01\n\x18\x62roadcastStateTransition\x12:.org.dash.platform.dapi.v0.BroadcastStateTransitionRequest\x1a;.org.dash.platform.dapi.v0.BroadcastStateTransitionResponse\x12l\n\x0bgetIdentity\x12-.org.dash.platform.dapi.v0.GetIdentityRequest\x1a..org.dash.platform.dapi.v0.GetIdentityResponse\x12x\n\x0fgetIdentityKeys\x12\x31.org.dash.platform.dapi.v0.GetIdentityKeysRequest\x1a\x32.org.dash.platform.dapi.v0.GetIdentityKeysResponse\x12\x96\x01\n\x19getIdentitiesContractKeys\x12;.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest\x1a<.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse\x12{\n\x10getIdentityNonce\x12\x32.org.dash.platform.dapi.v0.GetIdentityNonceRequest\x1a\x33.org.dash.platform.dapi.v0.GetIdentityNonceResponse\x12\x93\x01\n\x18getIdentityContractNonce\x12:.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse\x12\x81\x01\n\x12getIdentityBalance\x12\x34.org.dash.platform.dapi.v0.GetIdentityBalanceRequest\x1a\x35.org.dash.platform.dapi.v0.GetIdentityBalanceResponse\x12\x8a\x01\n\x15getIdentitiesBalances\x12\x37.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse\x12\xa2\x01\n\x1dgetIdentityBalanceAndRevision\x12?.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest\x1a@.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse\x12\xaf\x01\n#getEvonodesProposedEpochBlocksByIds\x12\x45.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12\xb3\x01\n%getEvonodesProposedEpochBlocksByRange\x12G.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12x\n\x0fgetDataContract\x12\x31.org.dash.platform.dapi.v0.GetDataContractRequest\x1a\x32.org.dash.platform.dapi.v0.GetDataContractResponse\x12\x8d\x01\n\x16getDataContractHistory\x12\x38.org.dash.platform.dapi.v0.GetDataContractHistoryRequest\x1a\x39.org.dash.platform.dapi.v0.GetDataContractHistoryResponse\x12{\n\x10getDataContracts\x12\x32.org.dash.platform.dapi.v0.GetDataContractsRequest\x1a\x33.org.dash.platform.dapi.v0.GetDataContractsResponse\x12o\n\x0cgetDocuments\x12..org.dash.platform.dapi.v0.GetDocumentsRequest\x1a/.org.dash.platform.dapi.v0.GetDocumentsResponse\x12\x99\x01\n\x1agetIdentityByPublicKeyHash\x12<.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest\x1a=.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse\x12\xb4\x01\n#getIdentityByNonUniquePublicKeyHash\x12\x45.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest\x1a\x46.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse\x12\x9f\x01\n\x1cwaitForStateTransitionResult\x12>.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest\x1a?.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse\x12\x81\x01\n\x12getConsensusParams\x12\x34.org.dash.platform.dapi.v0.GetConsensusParamsRequest\x1a\x35.org.dash.platform.dapi.v0.GetConsensusParamsResponse\x12\xa5\x01\n\x1egetProtocolVersionUpgradeState\x12@.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest\x1a\x41.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse\x12\xb4\x01\n#getProtocolVersionUpgradeVoteStatus\x12\x45.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest\x1a\x46.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse\x12r\n\rgetEpochsInfo\x12/.org.dash.platform.dapi.v0.GetEpochsInfoRequest\x1a\x30.org.dash.platform.dapi.v0.GetEpochsInfoResponse\x12\x8d\x01\n\x16getFinalizedEpochInfos\x12\x38.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest\x1a\x39.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse\x12\x8a\x01\n\x15getContestedResources\x12\x37.org.dash.platform.dapi.v0.GetContestedResourcesRequest\x1a\x38.org.dash.platform.dapi.v0.GetContestedResourcesResponse\x12\xa2\x01\n\x1dgetContestedResourceVoteState\x12?.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest\x1a@.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse\x12\xba\x01\n%getContestedResourceVotersForIdentity\x12G.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest\x1aH.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse\x12\xae\x01\n!getContestedResourceIdentityVotes\x12\x43.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest\x1a\x44.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse\x12\x8a\x01\n\x15getVotePollsByEndDate\x12\x37.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest\x1a\x38.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse\x12\xa5\x01\n\x1egetPrefundedSpecializedBalance\x12@.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest\x1a\x41.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse\x12\x96\x01\n\x19getTotalCreditsInPlatform\x12;.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest\x1a<.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse\x12x\n\x0fgetPathElements\x12\x31.org.dash.platform.dapi.v0.GetPathElementsRequest\x1a\x32.org.dash.platform.dapi.v0.GetPathElementsResponse\x12\x66\n\tgetStatus\x12+.org.dash.platform.dapi.v0.GetStatusRequest\x1a,.org.dash.platform.dapi.v0.GetStatusResponse\x12\x8a\x01\n\x15getCurrentQuorumsInfo\x12\x37.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest\x1a\x38.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse\x12\x93\x01\n\x18getIdentityTokenBalances\x12:.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse\x12\x99\x01\n\x1agetIdentitiesTokenBalances\x12<.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest\x1a=.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse\x12\x8a\x01\n\x15getIdentityTokenInfos\x12\x37.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse\x12\x90\x01\n\x17getIdentitiesTokenInfos\x12\x39.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest\x1a:.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse\x12{\n\x10getTokenStatuses\x12\x32.org.dash.platform.dapi.v0.GetTokenStatusesRequest\x1a\x33.org.dash.platform.dapi.v0.GetTokenStatusesResponse\x12\x9f\x01\n\x1cgetTokenDirectPurchasePrices\x12>.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest\x1a?.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse\x12\x87\x01\n\x14getTokenContractInfo\x12\x36.org.dash.platform.dapi.v0.GetTokenContractInfoRequest\x1a\x37.org.dash.platform.dapi.v0.GetTokenContractInfoResponse\x12\xb1\x01\n\"getTokenPreProgrammedDistributions\x12\x44.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest\x1a\x45.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse\x12\xbd\x01\n&getTokenPerpetualDistributionLastClaim\x12H.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest\x1aI.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse\x12\x84\x01\n\x13getTokenTotalSupply\x12\x35.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest\x1a\x36.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse\x12o\n\x0cgetGroupInfo\x12..org.dash.platform.dapi.v0.GetGroupInfoRequest\x1a/.org.dash.platform.dapi.v0.GetGroupInfoResponse\x12r\n\rgetGroupInfos\x12/.org.dash.platform.dapi.v0.GetGroupInfosRequest\x1a\x30.org.dash.platform.dapi.v0.GetGroupInfosResponse\x12x\n\x0fgetGroupActions\x12\x31.org.dash.platform.dapi.v0.GetGroupActionsRequest\x1a\x32.org.dash.platform.dapi.v0.GetGroupActionsResponse\x12\x8a\x01\n\x15getGroupActionSigners\x12\x37.org.dash.platform.dapi.v0.GetGroupActionSignersRequest\x1a\x38.org.dash.platform.dapi.v0.GetGroupActionSignersResponse\x12\x8c\x01\n\x17SubscribePlatformEvents\x12\x36.org.dash.platform.dapi.v0.PlatformSubscriptionRequest\x1a\x37.org.dash.platform.dapi.v0.PlatformSubscriptionResponse0\x01\x62\x06proto3' , dependencies=[google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) @@ -62,8 +62,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=52219, - serialized_end=52309, + serialized_start=52326, + serialized_end=52416, ) _sym_db.RegisterEnumDescriptor(_KEYPURPOSE) @@ -95,8 +95,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=5441, - serialized_end=5524, + serialized_start=5548, + serialized_end=5631, ) _sym_db.RegisterEnumDescriptor(_SECURITYLEVELMAP_KEYKINDREQUESTTYPE) @@ -125,8 +125,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=23882, - serialized_end=23955, + serialized_start=23989, + serialized_end=24062, ) _sym_db.RegisterEnumDescriptor(_GETCONTESTEDRESOURCEVOTESTATEREQUEST_GETCONTESTEDRESOURCEVOTESTATEREQUESTV0_RESULTTYPE) @@ -155,8 +155,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=24877, - serialized_end=24956, + serialized_start=24984, + serialized_end=25063, ) _sym_db.RegisterEnumDescriptor(_GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0_FINISHEDVOTEINFO_FINISHEDVOTEOUTCOME) @@ -185,8 +185,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=28585, - serialized_end=28646, + serialized_start=28692, + serialized_end=28753, ) _sym_db.RegisterEnumDescriptor(_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0_RESOURCEVOTECHOICE_VOTECHOICETYPE) @@ -210,8 +210,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=47190, - serialized_end=47228, + serialized_start=47297, + serialized_end=47335, ) _sym_db.RegisterEnumDescriptor(_GETGROUPACTIONSREQUEST_ACTIONSTATUS) @@ -235,8 +235,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=48475, - serialized_end=48510, + serialized_start=48582, + serialized_end=48617, ) _sym_db.RegisterEnumDescriptor(_GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_EMERGENCYACTIONEVENT_ACTIONTYPE) @@ -260,8 +260,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=47190, - serialized_end=47228, + serialized_start=47297, + serialized_end=47335, ) _sym_db.RegisterEnumDescriptor(_GETGROUPACTIONSIGNERSREQUEST_ACTIONSTATUS) @@ -281,6 +281,13 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='keepalive', full_name='org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.keepalive', index=1, + number=2, type=13, cpp_type=3, label=1, + has_default_value=False, default_value=0, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], @@ -294,7 +301,7 @@ oneofs=[ ], serialized_start=272, - serialized_end=364, + serialized_end=383, ) _PLATFORMSUBSCRIPTIONREQUEST = _descriptor.Descriptor( @@ -330,7 +337,7 @@ fields=[]), ], serialized_start=141, - serialized_end=375, + serialized_end=394, ) @@ -368,8 +375,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=512, - serialized_end=635, + serialized_start=531, + serialized_end=654, ) _PLATFORMSUBSCRIPTIONRESPONSE = _descriptor.Descriptor( @@ -404,8 +411,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=378, - serialized_end=646, + serialized_start=397, + serialized_end=665, ) @@ -441,8 +448,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=648, - serialized_end=711, + serialized_start=667, + serialized_end=730, ) @@ -492,8 +499,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=714, - serialized_end=873, + serialized_start=733, + serialized_end=892, ) @@ -538,8 +545,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1088, - serialized_end=1167, + serialized_start=1182, + serialized_end=1261, ) _PLATFORMEVENTV0_BLOCKCOMMITTED = _descriptor.Descriptor( @@ -576,8 +583,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1169, - serialized_end=1275, + serialized_start=1263, + serialized_end=1369, ) _PLATFORMEVENTV0_STATETRANSITIONFINALIZED = _descriptor.Descriptor( @@ -614,8 +621,32 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1277, - serialized_end=1392, + serialized_start=1371, + serialized_end=1486, +) + +_PLATFORMEVENTV0_KEEPALIVE = _descriptor.Descriptor( + name='Keepalive', + full_name='org.dash.platform.dapi.v0.PlatformEventV0.Keepalive', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=1488, + serialized_end=1499, ) _PLATFORMEVENTV0 = _descriptor.Descriptor( @@ -640,10 +671,17 @@ message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), + _descriptor.FieldDescriptor( + name='keepalive', full_name='org.dash.platform.dapi.v0.PlatformEventV0.keepalive', index=2, + number=3, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, + message_type=None, enum_type=None, containing_type=None, + is_extension=False, extension_scope=None, + serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), ], extensions=[ ], - nested_types=[_PLATFORMEVENTV0_BLOCKMETADATA, _PLATFORMEVENTV0_BLOCKCOMMITTED, _PLATFORMEVENTV0_STATETRANSITIONFINALIZED, ], + nested_types=[_PLATFORMEVENTV0_BLOCKMETADATA, _PLATFORMEVENTV0_BLOCKCOMMITTED, _PLATFORMEVENTV0_STATETRANSITIONFINALIZED, _PLATFORMEVENTV0_KEEPALIVE, ], enum_types=[ ], serialized_options=None, @@ -657,8 +695,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=876, - serialized_end=1401, + serialized_start=895, + serialized_end=1508, ) @@ -724,8 +762,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1404, - serialized_end=1533, + serialized_start=1511, + serialized_end=1640, ) @@ -791,8 +829,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1536, - serialized_end=1688, + serialized_start=1643, + serialized_end=1795, ) @@ -837,8 +875,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1690, - serialized_end=1766, + serialized_start=1797, + serialized_end=1873, ) @@ -869,8 +907,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1768, - serialized_end=1827, + serialized_start=1875, + serialized_end=1934, ) @@ -894,8 +932,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1829, - serialized_end=1863, + serialized_start=1936, + serialized_end=1970, ) @@ -933,8 +971,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1970, - serialized_end=2019, + serialized_start=2077, + serialized_end=2126, ) _GETIDENTITYREQUEST = _descriptor.Descriptor( @@ -969,8 +1007,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1866, - serialized_end=2030, + serialized_start=1973, + serialized_end=2137, ) @@ -1008,8 +1046,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2152, - serialized_end=2215, + serialized_start=2259, + serialized_end=2322, ) _GETIDENTITYNONCEREQUEST = _descriptor.Descriptor( @@ -1044,8 +1082,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2033, - serialized_end=2226, + serialized_start=2140, + serialized_end=2333, ) @@ -1090,8 +1128,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2372, - serialized_end=2464, + serialized_start=2479, + serialized_end=2571, ) _GETIDENTITYCONTRACTNONCEREQUEST = _descriptor.Descriptor( @@ -1126,8 +1164,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2229, - serialized_end=2475, + serialized_start=2336, + serialized_end=2582, ) @@ -1165,8 +1203,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2603, - serialized_end=2659, + serialized_start=2710, + serialized_end=2766, ) _GETIDENTITYBALANCEREQUEST = _descriptor.Descriptor( @@ -1201,8 +1239,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2478, - serialized_end=2670, + serialized_start=2585, + serialized_end=2777, ) @@ -1240,8 +1278,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2831, - serialized_end=2898, + serialized_start=2938, + serialized_end=3005, ) _GETIDENTITYBALANCEANDREVISIONREQUEST = _descriptor.Descriptor( @@ -1276,8 +1314,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2673, - serialized_end=2909, + serialized_start=2780, + serialized_end=3016, ) @@ -1327,8 +1365,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3020, - serialized_end=3187, + serialized_start=3127, + serialized_end=3294, ) _GETIDENTITYRESPONSE = _descriptor.Descriptor( @@ -1363,8 +1401,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2912, - serialized_end=3198, + serialized_start=3019, + serialized_end=3305, ) @@ -1414,8 +1452,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3324, - serialized_end=3506, + serialized_start=3431, + serialized_end=3613, ) _GETIDENTITYNONCERESPONSE = _descriptor.Descriptor( @@ -1450,8 +1488,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3201, - serialized_end=3517, + serialized_start=3308, + serialized_end=3624, ) @@ -1501,8 +1539,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3667, - serialized_end=3866, + serialized_start=3774, + serialized_end=3973, ) _GETIDENTITYCONTRACTNONCERESPONSE = _descriptor.Descriptor( @@ -1537,8 +1575,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3520, - serialized_end=3877, + serialized_start=3627, + serialized_end=3984, ) @@ -1588,8 +1626,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4009, - serialized_end=4186, + serialized_start=4116, + serialized_end=4293, ) _GETIDENTITYBALANCERESPONSE = _descriptor.Descriptor( @@ -1624,8 +1662,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3880, - serialized_end=4197, + serialized_start=3987, + serialized_end=4304, ) @@ -1663,8 +1701,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4677, - serialized_end=4740, + serialized_start=4784, + serialized_end=4847, ) _GETIDENTITYBALANCEANDREVISIONRESPONSE_GETIDENTITYBALANCEANDREVISIONRESPONSEV0 = _descriptor.Descriptor( @@ -1713,8 +1751,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4362, - serialized_end=4750, + serialized_start=4469, + serialized_end=4857, ) _GETIDENTITYBALANCEANDREVISIONRESPONSE = _descriptor.Descriptor( @@ -1749,8 +1787,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4200, - serialized_end=4761, + serialized_start=4307, + serialized_end=4868, ) @@ -1800,8 +1838,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4764, - serialized_end=4973, + serialized_start=4871, + serialized_end=5080, ) @@ -1825,8 +1863,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4975, - serialized_end=4984, + serialized_start=5082, + serialized_end=5091, ) @@ -1857,8 +1895,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4986, - serialized_end=5017, + serialized_start=5093, + serialized_end=5124, ) @@ -1896,8 +1934,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5108, - serialized_end=5202, + serialized_start=5215, + serialized_end=5309, ) _SEARCHKEY = _descriptor.Descriptor( @@ -1927,8 +1965,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5020, - serialized_end=5202, + serialized_start=5127, + serialized_end=5309, ) @@ -1966,8 +2004,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5320, - serialized_end=5439, + serialized_start=5427, + serialized_end=5546, ) _SECURITYLEVELMAP = _descriptor.Descriptor( @@ -1998,8 +2036,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5205, - serialized_end=5524, + serialized_start=5312, + serialized_end=5631, ) @@ -2058,8 +2096,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5644, - serialized_end=5862, + serialized_start=5751, + serialized_end=5969, ) _GETIDENTITYKEYSREQUEST = _descriptor.Descriptor( @@ -2094,8 +2132,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=5527, - serialized_end=5873, + serialized_start=5634, + serialized_end=5980, ) @@ -2126,8 +2164,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6238, - serialized_end=6264, + serialized_start=6345, + serialized_end=6371, ) _GETIDENTITYKEYSRESPONSE_GETIDENTITYKEYSRESPONSEV0 = _descriptor.Descriptor( @@ -2176,8 +2214,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=5996, - serialized_end=6274, + serialized_start=6103, + serialized_end=6381, ) _GETIDENTITYKEYSRESPONSE = _descriptor.Descriptor( @@ -2212,8 +2250,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=5876, - serialized_end=6285, + serialized_start=5983, + serialized_end=6392, ) @@ -2277,8 +2315,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6435, - serialized_end=6644, + serialized_start=6542, + serialized_end=6751, ) _GETIDENTITIESCONTRACTKEYSREQUEST = _descriptor.Descriptor( @@ -2313,8 +2351,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6288, - serialized_end=6655, + serialized_start=6395, + serialized_end=6762, ) @@ -2352,8 +2390,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7102, - serialized_end=7191, + serialized_start=7209, + serialized_end=7298, ) _GETIDENTITIESCONTRACTKEYSRESPONSE_GETIDENTITIESCONTRACTKEYSRESPONSEV0_IDENTITYKEYS = _descriptor.Descriptor( @@ -2390,8 +2428,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7194, - serialized_end=7353, + serialized_start=7301, + serialized_end=7460, ) _GETIDENTITIESCONTRACTKEYSRESPONSE_GETIDENTITIESCONTRACTKEYSRESPONSEV0_IDENTITIESKEYS = _descriptor.Descriptor( @@ -2421,8 +2459,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7356, - serialized_end=7500, + serialized_start=7463, + serialized_end=7607, ) _GETIDENTITIESCONTRACTKEYSRESPONSE_GETIDENTITIESCONTRACTKEYSRESPONSEV0 = _descriptor.Descriptor( @@ -2471,8 +2509,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6808, - serialized_end=7510, + serialized_start=6915, + serialized_end=7617, ) _GETIDENTITIESCONTRACTKEYSRESPONSE = _descriptor.Descriptor( @@ -2507,8 +2545,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6658, - serialized_end=7521, + serialized_start=6765, + serialized_end=7628, ) @@ -2558,8 +2596,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7701, - serialized_end=7805, + serialized_start=7808, + serialized_end=7912, ) _GETEVONODESPROPOSEDEPOCHBLOCKSBYIDSREQUEST = _descriptor.Descriptor( @@ -2594,8 +2632,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7524, - serialized_end=7816, + serialized_start=7631, + serialized_end=7923, ) @@ -2633,8 +2671,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8322, - serialized_end=8385, + serialized_start=8429, + serialized_end=8492, ) _GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSE_GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSEV0_EVONODESPROPOSEDBLOCKS = _descriptor.Descriptor( @@ -2664,8 +2702,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8388, - serialized_end=8584, + serialized_start=8495, + serialized_end=8691, ) _GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSE_GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSEV0 = _descriptor.Descriptor( @@ -2714,8 +2752,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7984, - serialized_end=8594, + serialized_start=8091, + serialized_end=8701, ) _GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSE = _descriptor.Descriptor( @@ -2750,8 +2788,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7819, - serialized_end=8605, + serialized_start=7926, + serialized_end=8712, ) @@ -2825,8 +2863,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8792, - serialized_end=8967, + serialized_start=8899, + serialized_end=9074, ) _GETEVONODESPROPOSEDEPOCHBLOCKSBYRANGEREQUEST = _descriptor.Descriptor( @@ -2861,8 +2899,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8608, - serialized_end=8978, + serialized_start=8715, + serialized_end=9085, ) @@ -2900,8 +2938,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9115, - serialized_end=9175, + serialized_start=9222, + serialized_end=9282, ) _GETIDENTITIESBALANCESREQUEST = _descriptor.Descriptor( @@ -2936,8 +2974,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8981, - serialized_end=9186, + serialized_start=9088, + serialized_end=9293, ) @@ -2980,8 +3018,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9617, - serialized_end=9693, + serialized_start=9724, + serialized_end=9800, ) _GETIDENTITIESBALANCESRESPONSE_GETIDENTITIESBALANCESRESPONSEV0_IDENTITIESBALANCES = _descriptor.Descriptor( @@ -3011,8 +3049,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9696, - serialized_end=9839, + serialized_start=9803, + serialized_end=9946, ) _GETIDENTITIESBALANCESRESPONSE_GETIDENTITIESBALANCESRESPONSEV0 = _descriptor.Descriptor( @@ -3061,8 +3099,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9327, - serialized_end=9849, + serialized_start=9434, + serialized_end=9956, ) _GETIDENTITIESBALANCESRESPONSE = _descriptor.Descriptor( @@ -3097,8 +3135,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9189, - serialized_end=9860, + serialized_start=9296, + serialized_end=9967, ) @@ -3136,8 +3174,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9979, - serialized_end=10032, + serialized_start=10086, + serialized_end=10139, ) _GETDATACONTRACTREQUEST = _descriptor.Descriptor( @@ -3172,8 +3210,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9863, - serialized_end=10043, + serialized_start=9970, + serialized_end=10150, ) @@ -3223,8 +3261,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10166, - serialized_end=10342, + serialized_start=10273, + serialized_end=10449, ) _GETDATACONTRACTRESPONSE = _descriptor.Descriptor( @@ -3259,8 +3297,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10046, - serialized_end=10353, + serialized_start=10153, + serialized_end=10460, ) @@ -3298,8 +3336,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10475, - serialized_end=10530, + serialized_start=10582, + serialized_end=10637, ) _GETDATACONTRACTSREQUEST = _descriptor.Descriptor( @@ -3334,8 +3372,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10356, - serialized_end=10541, + serialized_start=10463, + serialized_end=10648, ) @@ -3373,8 +3411,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10666, - serialized_end=10757, + serialized_start=10773, + serialized_end=10864, ) _GETDATACONTRACTSRESPONSE_DATACONTRACTS = _descriptor.Descriptor( @@ -3404,8 +3442,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10759, - serialized_end=10876, + serialized_start=10866, + serialized_end=10983, ) _GETDATACONTRACTSRESPONSE_GETDATACONTRACTSRESPONSEV0 = _descriptor.Descriptor( @@ -3454,8 +3492,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10879, - serialized_end=11124, + serialized_start=10986, + serialized_end=11231, ) _GETDATACONTRACTSRESPONSE = _descriptor.Descriptor( @@ -3490,8 +3528,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10544, - serialized_end=11135, + serialized_start=10651, + serialized_end=11242, ) @@ -3550,8 +3588,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11276, - serialized_end=11452, + serialized_start=11383, + serialized_end=11559, ) _GETDATACONTRACTHISTORYREQUEST = _descriptor.Descriptor( @@ -3586,8 +3624,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11138, - serialized_end=11463, + serialized_start=11245, + serialized_end=11570, ) @@ -3625,8 +3663,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11903, - serialized_end=11962, + serialized_start=12010, + serialized_end=12069, ) _GETDATACONTRACTHISTORYRESPONSE_GETDATACONTRACTHISTORYRESPONSEV0_DATACONTRACTHISTORY = _descriptor.Descriptor( @@ -3656,8 +3694,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11965, - serialized_end=12135, + serialized_start=12072, + serialized_end=12242, ) _GETDATACONTRACTHISTORYRESPONSE_GETDATACONTRACTHISTORYRESPONSEV0 = _descriptor.Descriptor( @@ -3706,8 +3744,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11607, - serialized_end=12145, + serialized_start=11714, + serialized_end=12252, ) _GETDATACONTRACTHISTORYRESPONSE = _descriptor.Descriptor( @@ -3742,8 +3780,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11466, - serialized_end=12156, + serialized_start=11573, + serialized_end=12263, ) @@ -3828,8 +3866,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12267, - serialized_end=12454, + serialized_start=12374, + serialized_end=12561, ) _GETDOCUMENTSREQUEST = _descriptor.Descriptor( @@ -3864,8 +3902,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12159, - serialized_end=12465, + serialized_start=12266, + serialized_end=12572, ) @@ -3896,8 +3934,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12822, - serialized_end=12852, + serialized_start=12929, + serialized_end=12959, ) _GETDOCUMENTSRESPONSE_GETDOCUMENTSRESPONSEV0 = _descriptor.Descriptor( @@ -3946,8 +3984,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12579, - serialized_end=12862, + serialized_start=12686, + serialized_end=12969, ) _GETDOCUMENTSRESPONSE = _descriptor.Descriptor( @@ -3982,8 +4020,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12468, - serialized_end=12873, + serialized_start=12575, + serialized_end=12980, ) @@ -4021,8 +4059,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13025, - serialized_end=13102, + serialized_start=13132, + serialized_end=13209, ) _GETIDENTITYBYPUBLICKEYHASHREQUEST = _descriptor.Descriptor( @@ -4057,8 +4095,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12876, - serialized_end=13113, + serialized_start=12983, + serialized_end=13220, ) @@ -4108,8 +4146,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13269, - serialized_end=13451, + serialized_start=13376, + serialized_end=13558, ) _GETIDENTITYBYPUBLICKEYHASHRESPONSE = _descriptor.Descriptor( @@ -4144,8 +4182,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13116, - serialized_end=13462, + serialized_start=13223, + serialized_end=13569, ) @@ -4195,8 +4233,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13643, - serialized_end=13771, + serialized_start=13750, + serialized_end=13878, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHREQUEST = _descriptor.Descriptor( @@ -4231,8 +4269,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13465, - serialized_end=13782, + serialized_start=13572, + serialized_end=13889, ) @@ -4268,8 +4306,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14395, - serialized_end=14449, + serialized_start=14502, + serialized_end=14556, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSE_GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSEV0_IDENTITYPROVEDRESPONSE = _descriptor.Descriptor( @@ -4311,8 +4349,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14452, - serialized_end=14618, + serialized_start=14559, + serialized_end=14725, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSE_GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSEV0 = _descriptor.Descriptor( @@ -4361,8 +4399,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13966, - serialized_end=14628, + serialized_start=14073, + serialized_end=14735, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSE = _descriptor.Descriptor( @@ -4397,8 +4435,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13785, - serialized_end=14639, + serialized_start=13892, + serialized_end=14746, ) @@ -4436,8 +4474,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14797, - serialized_end=14882, + serialized_start=14904, + serialized_end=14989, ) _WAITFORSTATETRANSITIONRESULTREQUEST = _descriptor.Descriptor( @@ -4472,8 +4510,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14642, - serialized_end=14893, + serialized_start=14749, + serialized_end=15000, ) @@ -4523,8 +4561,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15055, - serialized_end=15294, + serialized_start=15162, + serialized_end=15401, ) _WAITFORSTATETRANSITIONRESULTRESPONSE = _descriptor.Descriptor( @@ -4559,8 +4597,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14896, - serialized_end=15305, + serialized_start=15003, + serialized_end=15412, ) @@ -4598,8 +4636,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15433, - serialized_end=15493, + serialized_start=15540, + serialized_end=15600, ) _GETCONSENSUSPARAMSREQUEST = _descriptor.Descriptor( @@ -4634,8 +4672,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15308, - serialized_end=15504, + serialized_start=15415, + serialized_end=15611, ) @@ -4680,8 +4718,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15635, - serialized_end=15715, + serialized_start=15742, + serialized_end=15822, ) _GETCONSENSUSPARAMSRESPONSE_CONSENSUSPARAMSEVIDENCE = _descriptor.Descriptor( @@ -4725,8 +4763,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15717, - serialized_end=15815, + serialized_start=15824, + serialized_end=15922, ) _GETCONSENSUSPARAMSRESPONSE_GETCONSENSUSPARAMSRESPONSEV0 = _descriptor.Descriptor( @@ -4763,8 +4801,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15818, - serialized_end=16036, + serialized_start=15925, + serialized_end=16143, ) _GETCONSENSUSPARAMSRESPONSE = _descriptor.Descriptor( @@ -4799,8 +4837,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15507, - serialized_end=16047, + serialized_start=15614, + serialized_end=16154, ) @@ -4831,8 +4869,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16211, - serialized_end=16267, + serialized_start=16318, + serialized_end=16374, ) _GETPROTOCOLVERSIONUPGRADESTATEREQUEST = _descriptor.Descriptor( @@ -4867,8 +4905,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16050, - serialized_end=16278, + serialized_start=16157, + serialized_end=16385, ) @@ -4899,8 +4937,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16743, - serialized_end=16893, + serialized_start=16850, + serialized_end=17000, ) _GETPROTOCOLVERSIONUPGRADESTATERESPONSE_GETPROTOCOLVERSIONUPGRADESTATERESPONSEV0_VERSIONENTRY = _descriptor.Descriptor( @@ -4937,8 +4975,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16895, - serialized_end=16953, + serialized_start=17002, + serialized_end=17060, ) _GETPROTOCOLVERSIONUPGRADESTATERESPONSE_GETPROTOCOLVERSIONUPGRADESTATERESPONSEV0 = _descriptor.Descriptor( @@ -4987,8 +5025,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16446, - serialized_end=16963, + serialized_start=16553, + serialized_end=17070, ) _GETPROTOCOLVERSIONUPGRADESTATERESPONSE = _descriptor.Descriptor( @@ -5023,8 +5061,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16281, - serialized_end=16974, + serialized_start=16388, + serialized_end=17081, ) @@ -5069,8 +5107,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17154, - serialized_end=17257, + serialized_start=17261, + serialized_end=17364, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSREQUEST = _descriptor.Descriptor( @@ -5105,8 +5143,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16977, - serialized_end=17268, + serialized_start=17084, + serialized_end=17375, ) @@ -5137,8 +5175,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17771, - serialized_end=17946, + serialized_start=17878, + serialized_end=18053, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSE_GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSEV0_VERSIONSIGNAL = _descriptor.Descriptor( @@ -5175,8 +5213,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17948, - serialized_end=18001, + serialized_start=18055, + serialized_end=18108, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSE_GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSEV0 = _descriptor.Descriptor( @@ -5225,8 +5263,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=17452, - serialized_end=18011, + serialized_start=17559, + serialized_end=18118, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSE = _descriptor.Descriptor( @@ -5261,8 +5299,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=17271, - serialized_end=18022, + serialized_start=17378, + serialized_end=18129, ) @@ -5314,8 +5352,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18135, - serialized_end=18259, + serialized_start=18242, + serialized_end=18366, ) _GETEPOCHSINFOREQUEST = _descriptor.Descriptor( @@ -5350,8 +5388,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18025, - serialized_end=18270, + serialized_start=18132, + serialized_end=18377, ) @@ -5382,8 +5420,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18631, - serialized_end=18748, + serialized_start=18738, + serialized_end=18855, ) _GETEPOCHSINFORESPONSE_GETEPOCHSINFORESPONSEV0_EPOCHINFO = _descriptor.Descriptor( @@ -5448,8 +5486,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18751, - serialized_end=18917, + serialized_start=18858, + serialized_end=19024, ) _GETEPOCHSINFORESPONSE_GETEPOCHSINFORESPONSEV0 = _descriptor.Descriptor( @@ -5498,8 +5536,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18387, - serialized_end=18927, + serialized_start=18494, + serialized_end=19034, ) _GETEPOCHSINFORESPONSE = _descriptor.Descriptor( @@ -5534,8 +5572,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18273, - serialized_end=18938, + serialized_start=18380, + serialized_end=19045, ) @@ -5594,8 +5632,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19079, - serialized_end=19249, + serialized_start=19186, + serialized_end=19356, ) _GETFINALIZEDEPOCHINFOSREQUEST = _descriptor.Descriptor( @@ -5630,8 +5668,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18941, - serialized_end=19260, + serialized_start=19048, + serialized_end=19367, ) @@ -5662,8 +5700,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19686, - serialized_end=19850, + serialized_start=19793, + serialized_end=19957, ) _GETFINALIZEDEPOCHINFOSRESPONSE_GETFINALIZEDEPOCHINFOSRESPONSEV0_FINALIZEDEPOCHINFO = _descriptor.Descriptor( @@ -5777,8 +5815,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19853, - serialized_end=20396, + serialized_start=19960, + serialized_end=20503, ) _GETFINALIZEDEPOCHINFOSRESPONSE_GETFINALIZEDEPOCHINFOSRESPONSEV0_BLOCKPROPOSER = _descriptor.Descriptor( @@ -5815,8 +5853,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20398, - serialized_end=20455, + serialized_start=20505, + serialized_end=20562, ) _GETFINALIZEDEPOCHINFOSRESPONSE_GETFINALIZEDEPOCHINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -5865,8 +5903,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19404, - serialized_end=20465, + serialized_start=19511, + serialized_end=20572, ) _GETFINALIZEDEPOCHINFOSRESPONSE = _descriptor.Descriptor( @@ -5901,8 +5939,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19263, - serialized_end=20476, + serialized_start=19370, + serialized_end=20583, ) @@ -5940,8 +5978,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20971, - serialized_end=21040, + serialized_start=21078, + serialized_end=21147, ) _GETCONTESTEDRESOURCESREQUEST_GETCONTESTEDRESOURCESREQUESTV0 = _descriptor.Descriptor( @@ -6037,8 +6075,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=20614, - serialized_end=21074, + serialized_start=20721, + serialized_end=21181, ) _GETCONTESTEDRESOURCESREQUEST = _descriptor.Descriptor( @@ -6073,8 +6111,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=20479, - serialized_end=21085, + serialized_start=20586, + serialized_end=21192, ) @@ -6105,8 +6143,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=21527, - serialized_end=21587, + serialized_start=21634, + serialized_end=21694, ) _GETCONTESTEDRESOURCESRESPONSE_GETCONTESTEDRESOURCESRESPONSEV0 = _descriptor.Descriptor( @@ -6155,8 +6193,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21226, - serialized_end=21597, + serialized_start=21333, + serialized_end=21704, ) _GETCONTESTEDRESOURCESRESPONSE = _descriptor.Descriptor( @@ -6191,8 +6229,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21088, - serialized_end=21608, + serialized_start=21195, + serialized_end=21715, ) @@ -6230,8 +6268,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=22121, - serialized_end=22194, + serialized_start=22228, + serialized_end=22301, ) _GETVOTEPOLLSBYENDDATEREQUEST_GETVOTEPOLLSBYENDDATEREQUESTV0_ENDATTIMEINFO = _descriptor.Descriptor( @@ -6268,8 +6306,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=22196, - serialized_end=22263, + serialized_start=22303, + serialized_end=22370, ) _GETVOTEPOLLSBYENDDATEREQUEST_GETVOTEPOLLSBYENDDATEREQUESTV0 = _descriptor.Descriptor( @@ -6354,8 +6392,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21746, - serialized_end=22322, + serialized_start=21853, + serialized_end=22429, ) _GETVOTEPOLLSBYENDDATEREQUEST = _descriptor.Descriptor( @@ -6390,8 +6428,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21611, - serialized_end=22333, + serialized_start=21718, + serialized_end=22440, ) @@ -6429,8 +6467,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=22782, - serialized_end=22868, + serialized_start=22889, + serialized_end=22975, ) _GETVOTEPOLLSBYENDDATERESPONSE_GETVOTEPOLLSBYENDDATERESPONSEV0_SERIALIZEDVOTEPOLLSBYTIMESTAMPS = _descriptor.Descriptor( @@ -6467,8 +6505,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=22871, - serialized_end=23086, + serialized_start=22978, + serialized_end=23193, ) _GETVOTEPOLLSBYENDDATERESPONSE_GETVOTEPOLLSBYENDDATERESPONSEV0 = _descriptor.Descriptor( @@ -6517,8 +6555,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=22474, - serialized_end=23096, + serialized_start=22581, + serialized_end=23203, ) _GETVOTEPOLLSBYENDDATERESPONSE = _descriptor.Descriptor( @@ -6553,8 +6591,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=22336, - serialized_end=23107, + serialized_start=22443, + serialized_end=23214, ) @@ -6592,8 +6630,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=23796, - serialized_end=23880, + serialized_start=23903, + serialized_end=23987, ) _GETCONTESTEDRESOURCEVOTESTATEREQUEST_GETCONTESTEDRESOURCEVOTESTATEREQUESTV0 = _descriptor.Descriptor( @@ -6690,8 +6728,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=23269, - serialized_end=23994, + serialized_start=23376, + serialized_end=24101, ) _GETCONTESTEDRESOURCEVOTESTATEREQUEST = _descriptor.Descriptor( @@ -6726,8 +6764,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=23110, - serialized_end=24005, + serialized_start=23217, + serialized_end=24112, ) @@ -6799,8 +6837,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24505, - serialized_end=24979, + serialized_start=24612, + serialized_end=25086, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0_CONTESTEDRESOURCECONTENDERS = _descriptor.Descriptor( @@ -6866,8 +6904,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24982, - serialized_end=25434, + serialized_start=25089, + serialized_end=25541, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0_CONTENDER = _descriptor.Descriptor( @@ -6921,8 +6959,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25436, - serialized_end=25543, + serialized_start=25543, + serialized_end=25650, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0 = _descriptor.Descriptor( @@ -6971,8 +7009,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24170, - serialized_end=25553, + serialized_start=24277, + serialized_end=25660, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE = _descriptor.Descriptor( @@ -7007,8 +7045,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24008, - serialized_end=25564, + serialized_start=24115, + serialized_end=25671, ) @@ -7046,8 +7084,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=23796, - serialized_end=23880, + serialized_start=23903, + serialized_end=23987, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYREQUEST_GETCONTESTEDRESOURCEVOTERSFORIDENTITYREQUESTV0 = _descriptor.Descriptor( @@ -7143,8 +7181,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25751, - serialized_end=26281, + serialized_start=25858, + serialized_end=26388, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYREQUEST = _descriptor.Descriptor( @@ -7179,8 +7217,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25567, - serialized_end=26292, + serialized_start=25674, + serialized_end=26399, ) @@ -7218,8 +7256,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=26832, - serialized_end=26899, + serialized_start=26939, + serialized_end=27006, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYRESPONSE_GETCONTESTEDRESOURCEVOTERSFORIDENTITYRESPONSEV0 = _descriptor.Descriptor( @@ -7268,8 +7306,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=26482, - serialized_end=26909, + serialized_start=26589, + serialized_end=27016, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYRESPONSE = _descriptor.Descriptor( @@ -7304,8 +7342,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=26295, - serialized_end=26920, + serialized_start=26402, + serialized_end=27027, ) @@ -7343,8 +7381,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=27469, - serialized_end=27566, + serialized_start=27576, + serialized_end=27673, ) _GETCONTESTEDRESOURCEIDENTITYVOTESREQUEST_GETCONTESTEDRESOURCEIDENTITYVOTESREQUESTV0 = _descriptor.Descriptor( @@ -7414,8 +7452,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27094, - serialized_end=27597, + serialized_start=27201, + serialized_end=27704, ) _GETCONTESTEDRESOURCEIDENTITYVOTESREQUEST = _descriptor.Descriptor( @@ -7450,8 +7488,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=26923, - serialized_end=27608, + serialized_start=27030, + serialized_end=27715, ) @@ -7489,8 +7527,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=28111, - serialized_end=28358, + serialized_start=28218, + serialized_end=28465, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0_RESOURCEVOTECHOICE = _descriptor.Descriptor( @@ -7533,8 +7571,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=28361, - serialized_end=28662, + serialized_start=28468, + serialized_end=28769, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0_CONTESTEDRESOURCEIDENTITYVOTE = _descriptor.Descriptor( @@ -7585,8 +7623,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=28665, - serialized_end=28942, + serialized_start=28772, + serialized_end=29049, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0 = _descriptor.Descriptor( @@ -7635,8 +7673,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27785, - serialized_end=28952, + serialized_start=27892, + serialized_end=29059, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE = _descriptor.Descriptor( @@ -7671,8 +7709,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27611, - serialized_end=28963, + serialized_start=27718, + serialized_end=29070, ) @@ -7710,8 +7748,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=29127, - serialized_end=29195, + serialized_start=29234, + serialized_end=29302, ) _GETPREFUNDEDSPECIALIZEDBALANCEREQUEST = _descriptor.Descriptor( @@ -7746,8 +7784,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=28966, - serialized_end=29206, + serialized_start=29073, + serialized_end=29313, ) @@ -7797,8 +7835,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29374, - serialized_end=29563, + serialized_start=29481, + serialized_end=29670, ) _GETPREFUNDEDSPECIALIZEDBALANCERESPONSE = _descriptor.Descriptor( @@ -7833,8 +7871,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29209, - serialized_end=29574, + serialized_start=29316, + serialized_end=29681, ) @@ -7865,8 +7903,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=29723, - serialized_end=29774, + serialized_start=29830, + serialized_end=29881, ) _GETTOTALCREDITSINPLATFORMREQUEST = _descriptor.Descriptor( @@ -7901,8 +7939,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29577, - serialized_end=29785, + serialized_start=29684, + serialized_end=29892, ) @@ -7952,8 +7990,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29938, - serialized_end=30122, + serialized_start=30045, + serialized_end=30229, ) _GETTOTALCREDITSINPLATFORMRESPONSE = _descriptor.Descriptor( @@ -7988,8 +8026,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29788, - serialized_end=30133, + serialized_start=29895, + serialized_end=30240, ) @@ -8034,8 +8072,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30252, - serialized_end=30321, + serialized_start=30359, + serialized_end=30428, ) _GETPATHELEMENTSREQUEST = _descriptor.Descriptor( @@ -8070,8 +8108,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30136, - serialized_end=30332, + serialized_start=30243, + serialized_end=30439, ) @@ -8102,8 +8140,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30705, - serialized_end=30733, + serialized_start=30812, + serialized_end=30840, ) _GETPATHELEMENTSRESPONSE_GETPATHELEMENTSRESPONSEV0 = _descriptor.Descriptor( @@ -8152,8 +8190,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30455, - serialized_end=30743, + serialized_start=30562, + serialized_end=30850, ) _GETPATHELEMENTSRESPONSE = _descriptor.Descriptor( @@ -8188,8 +8226,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30335, - serialized_end=30754, + serialized_start=30442, + serialized_end=30861, ) @@ -8213,8 +8251,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30855, - serialized_end=30875, + serialized_start=30962, + serialized_end=30982, ) _GETSTATUSREQUEST = _descriptor.Descriptor( @@ -8249,8 +8287,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30757, - serialized_end=30886, + serialized_start=30864, + serialized_end=30993, ) @@ -8305,8 +8343,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=31763, - serialized_end=31857, + serialized_start=31870, + serialized_end=31964, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION_PROTOCOL_TENDERDASH = _descriptor.Descriptor( @@ -8343,8 +8381,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32090, - serialized_end=32130, + serialized_start=32197, + serialized_end=32237, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION_PROTOCOL_DRIVE = _descriptor.Descriptor( @@ -8381,8 +8419,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32132, - serialized_end=32172, + serialized_start=32239, + serialized_end=32279, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION_PROTOCOL = _descriptor.Descriptor( @@ -8419,8 +8457,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=31860, - serialized_end=32172, + serialized_start=31967, + serialized_end=32279, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION = _descriptor.Descriptor( @@ -8457,8 +8495,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=31550, - serialized_end=32172, + serialized_start=31657, + serialized_end=32279, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_TIME = _descriptor.Descriptor( @@ -8524,8 +8562,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=32174, - serialized_end=32301, + serialized_start=32281, + serialized_end=32408, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_NODE = _descriptor.Descriptor( @@ -8567,8 +8605,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=32303, - serialized_end=32363, + serialized_start=32410, + serialized_end=32470, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_CHAIN = _descriptor.Descriptor( @@ -8659,8 +8697,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=32366, - serialized_end=32673, + serialized_start=32473, + serialized_end=32780, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_NETWORK = _descriptor.Descriptor( @@ -8704,8 +8742,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32675, - serialized_end=32742, + serialized_start=32782, + serialized_end=32849, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_STATESYNC = _descriptor.Descriptor( @@ -8784,8 +8822,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32745, - serialized_end=33006, + serialized_start=32852, + serialized_end=33113, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0 = _descriptor.Descriptor( @@ -8850,8 +8888,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30991, - serialized_end=33006, + serialized_start=31098, + serialized_end=33113, ) _GETSTATUSRESPONSE = _descriptor.Descriptor( @@ -8886,8 +8924,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30889, - serialized_end=33017, + serialized_start=30996, + serialized_end=33124, ) @@ -8911,8 +8949,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33154, - serialized_end=33186, + serialized_start=33261, + serialized_end=33293, ) _GETCURRENTQUORUMSINFOREQUEST = _descriptor.Descriptor( @@ -8947,8 +8985,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=33020, - serialized_end=33197, + serialized_start=33127, + serialized_end=33304, ) @@ -8993,8 +9031,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33337, - serialized_end=33407, + serialized_start=33444, + serialized_end=33514, ) _GETCURRENTQUORUMSINFORESPONSE_VALIDATORSETV0 = _descriptor.Descriptor( @@ -9045,8 +9083,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33410, - serialized_end=33585, + serialized_start=33517, + serialized_end=33692, ) _GETCURRENTQUORUMSINFORESPONSE_GETCURRENTQUORUMSINFORESPONSEV0 = _descriptor.Descriptor( @@ -9104,8 +9142,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33588, - serialized_end=33862, + serialized_start=33695, + serialized_end=33969, ) _GETCURRENTQUORUMSINFORESPONSE = _descriptor.Descriptor( @@ -9140,8 +9178,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=33200, - serialized_end=33873, + serialized_start=33307, + serialized_end=33980, ) @@ -9186,8 +9224,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=34019, - serialized_end=34109, + serialized_start=34126, + serialized_end=34216, ) _GETIDENTITYTOKENBALANCESREQUEST = _descriptor.Descriptor( @@ -9222,8 +9260,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=33876, - serialized_end=34120, + serialized_start=33983, + serialized_end=34227, ) @@ -9266,8 +9304,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34559, - serialized_end=34630, + serialized_start=34666, + serialized_end=34737, ) _GETIDENTITYTOKENBALANCESRESPONSE_GETIDENTITYTOKENBALANCESRESPONSEV0_TOKENBALANCES = _descriptor.Descriptor( @@ -9297,8 +9335,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=34633, - serialized_end=34787, + serialized_start=34740, + serialized_end=34894, ) _GETIDENTITYTOKENBALANCESRESPONSE_GETIDENTITYTOKENBALANCESRESPONSEV0 = _descriptor.Descriptor( @@ -9347,8 +9385,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34270, - serialized_end=34797, + serialized_start=34377, + serialized_end=34904, ) _GETIDENTITYTOKENBALANCESRESPONSE = _descriptor.Descriptor( @@ -9383,8 +9421,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34123, - serialized_end=34808, + serialized_start=34230, + serialized_end=34915, ) @@ -9429,8 +9467,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=34960, - serialized_end=35052, + serialized_start=35067, + serialized_end=35159, ) _GETIDENTITIESTOKENBALANCESREQUEST = _descriptor.Descriptor( @@ -9465,8 +9503,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34811, - serialized_end=35063, + serialized_start=34918, + serialized_end=35170, ) @@ -9509,8 +9547,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35531, - serialized_end=35613, + serialized_start=35638, + serialized_end=35720, ) _GETIDENTITIESTOKENBALANCESRESPONSE_GETIDENTITIESTOKENBALANCESRESPONSEV0_IDENTITYTOKENBALANCES = _descriptor.Descriptor( @@ -9540,8 +9578,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=35616, - serialized_end=35799, + serialized_start=35723, + serialized_end=35906, ) _GETIDENTITIESTOKENBALANCESRESPONSE_GETIDENTITIESTOKENBALANCESRESPONSEV0 = _descriptor.Descriptor( @@ -9590,8 +9628,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35219, - serialized_end=35809, + serialized_start=35326, + serialized_end=35916, ) _GETIDENTITIESTOKENBALANCESRESPONSE = _descriptor.Descriptor( @@ -9626,8 +9664,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35066, - serialized_end=35820, + serialized_start=35173, + serialized_end=35927, ) @@ -9672,8 +9710,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=35957, - serialized_end=36044, + serialized_start=36064, + serialized_end=36151, ) _GETIDENTITYTOKENINFOSREQUEST = _descriptor.Descriptor( @@ -9708,8 +9746,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35823, - serialized_end=36055, + serialized_start=35930, + serialized_end=36162, ) @@ -9740,8 +9778,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36469, - serialized_end=36509, + serialized_start=36576, + serialized_end=36616, ) _GETIDENTITYTOKENINFOSRESPONSE_GETIDENTITYTOKENINFOSRESPONSEV0_TOKENINFOENTRY = _descriptor.Descriptor( @@ -9783,8 +9821,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36512, - serialized_end=36688, + serialized_start=36619, + serialized_end=36795, ) _GETIDENTITYTOKENINFOSRESPONSE_GETIDENTITYTOKENINFOSRESPONSEV0_TOKENINFOS = _descriptor.Descriptor( @@ -9814,8 +9852,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36691, - serialized_end=36829, + serialized_start=36798, + serialized_end=36936, ) _GETIDENTITYTOKENINFOSRESPONSE_GETIDENTITYTOKENINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -9864,8 +9902,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36196, - serialized_end=36839, + serialized_start=36303, + serialized_end=36946, ) _GETIDENTITYTOKENINFOSRESPONSE = _descriptor.Descriptor( @@ -9900,8 +9938,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36058, - serialized_end=36850, + serialized_start=36165, + serialized_end=36957, ) @@ -9946,8 +9984,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36993, - serialized_end=37082, + serialized_start=37100, + serialized_end=37189, ) _GETIDENTITIESTOKENINFOSREQUEST = _descriptor.Descriptor( @@ -9982,8 +10020,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36853, - serialized_end=37093, + serialized_start=36960, + serialized_end=37200, ) @@ -10014,8 +10052,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36469, - serialized_end=36509, + serialized_start=36576, + serialized_end=36616, ) _GETIDENTITIESTOKENINFOSRESPONSE_GETIDENTITIESTOKENINFOSRESPONSEV0_TOKENINFOENTRY = _descriptor.Descriptor( @@ -10057,8 +10095,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37580, - serialized_end=37763, + serialized_start=37687, + serialized_end=37870, ) _GETIDENTITIESTOKENINFOSRESPONSE_GETIDENTITIESTOKENINFOSRESPONSEV0_IDENTITYTOKENINFOS = _descriptor.Descriptor( @@ -10088,8 +10126,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=37766, - serialized_end=37917, + serialized_start=37873, + serialized_end=38024, ) _GETIDENTITIESTOKENINFOSRESPONSE_GETIDENTITIESTOKENINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -10138,8 +10176,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37240, - serialized_end=37927, + serialized_start=37347, + serialized_end=38034, ) _GETIDENTITIESTOKENINFOSRESPONSE = _descriptor.Descriptor( @@ -10174,8 +10212,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37096, - serialized_end=37938, + serialized_start=37203, + serialized_end=38045, ) @@ -10213,8 +10251,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=38060, - serialized_end=38121, + serialized_start=38167, + serialized_end=38228, ) _GETTOKENSTATUSESREQUEST = _descriptor.Descriptor( @@ -10249,8 +10287,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37941, - serialized_end=38132, + serialized_start=38048, + serialized_end=38239, ) @@ -10293,8 +10331,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38522, - serialized_end=38590, + serialized_start=38629, + serialized_end=38697, ) _GETTOKENSTATUSESRESPONSE_GETTOKENSTATUSESRESPONSEV0_TOKENSTATUSES = _descriptor.Descriptor( @@ -10324,8 +10362,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=38593, - serialized_end=38729, + serialized_start=38700, + serialized_end=38836, ) _GETTOKENSTATUSESRESPONSE_GETTOKENSTATUSESRESPONSEV0 = _descriptor.Descriptor( @@ -10374,8 +10412,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38258, - serialized_end=38739, + serialized_start=38365, + serialized_end=38846, ) _GETTOKENSTATUSESRESPONSE = _descriptor.Descriptor( @@ -10410,8 +10448,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38135, - serialized_end=38750, + serialized_start=38242, + serialized_end=38857, ) @@ -10449,8 +10487,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=38908, - serialized_end=38981, + serialized_start=39015, + serialized_end=39088, ) _GETTOKENDIRECTPURCHASEPRICESREQUEST = _descriptor.Descriptor( @@ -10485,8 +10523,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38753, - serialized_end=38992, + serialized_start=38860, + serialized_end=39099, ) @@ -10524,8 +10562,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39482, - serialized_end=39533, + serialized_start=39589, + serialized_end=39640, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0_PRICINGSCHEDULE = _descriptor.Descriptor( @@ -10555,8 +10593,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39536, - serialized_end=39703, + serialized_start=39643, + serialized_end=39810, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0_TOKENDIRECTPURCHASEPRICEENTRY = _descriptor.Descriptor( @@ -10605,8 +10643,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39706, - serialized_end=39934, + serialized_start=39813, + serialized_end=40041, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0_TOKENDIRECTPURCHASEPRICES = _descriptor.Descriptor( @@ -10636,8 +10674,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39937, - serialized_end=40137, + serialized_start=40044, + serialized_end=40244, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0 = _descriptor.Descriptor( @@ -10686,8 +10724,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39154, - serialized_end=40147, + serialized_start=39261, + serialized_end=40254, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE = _descriptor.Descriptor( @@ -10722,8 +10760,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38995, - serialized_end=40158, + serialized_start=39102, + serialized_end=40265, ) @@ -10761,8 +10799,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=40292, - serialized_end=40356, + serialized_start=40399, + serialized_end=40463, ) _GETTOKENCONTRACTINFOREQUEST = _descriptor.Descriptor( @@ -10797,8 +10835,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40161, - serialized_end=40367, + serialized_start=40268, + serialized_end=40474, ) @@ -10836,8 +10874,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=40779, - serialized_end=40856, + serialized_start=40886, + serialized_end=40963, ) _GETTOKENCONTRACTINFORESPONSE_GETTOKENCONTRACTINFORESPONSEV0 = _descriptor.Descriptor( @@ -10886,8 +10924,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40505, - serialized_end=40866, + serialized_start=40612, + serialized_end=40973, ) _GETTOKENCONTRACTINFORESPONSE = _descriptor.Descriptor( @@ -10922,8 +10960,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40370, - serialized_end=40877, + serialized_start=40477, + serialized_end=40984, ) @@ -10978,8 +11016,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41310, - serialized_end=41464, + serialized_start=41417, + serialized_end=41571, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSREQUEST_GETTOKENPREPROGRAMMEDDISTRIBUTIONSREQUESTV0 = _descriptor.Descriptor( @@ -11040,8 +11078,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41054, - serialized_end=41492, + serialized_start=41161, + serialized_end=41599, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSREQUEST = _descriptor.Descriptor( @@ -11076,8 +11114,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40880, - serialized_end=41503, + serialized_start=40987, + serialized_end=41610, ) @@ -11115,8 +11153,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42014, - serialized_end=42076, + serialized_start=42121, + serialized_end=42183, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE_GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSEV0_TOKENTIMEDDISTRIBUTIONENTRY = _descriptor.Descriptor( @@ -11153,8 +11191,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42079, - serialized_end=42291, + serialized_start=42186, + serialized_end=42398, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE_GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSEV0_TOKENDISTRIBUTIONS = _descriptor.Descriptor( @@ -11184,8 +11222,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42294, - serialized_end=42489, + serialized_start=42401, + serialized_end=42596, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE_GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSEV0 = _descriptor.Descriptor( @@ -11234,8 +11272,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41684, - serialized_end=42499, + serialized_start=41791, + serialized_end=42606, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE = _descriptor.Descriptor( @@ -11270,8 +11308,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41506, - serialized_end=42510, + serialized_start=41613, + serialized_end=42617, ) @@ -11309,8 +11347,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42699, - serialized_end=42772, + serialized_start=42806, + serialized_end=42879, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMREQUEST_GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMREQUESTV0 = _descriptor.Descriptor( @@ -11366,8 +11404,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=42775, - serialized_end=43016, + serialized_start=42882, + serialized_end=43123, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMREQUEST = _descriptor.Descriptor( @@ -11402,8 +11440,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=42513, - serialized_end=43027, + serialized_start=42620, + serialized_end=43134, ) @@ -11460,8 +11498,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43548, - serialized_end=43668, + serialized_start=43655, + serialized_end=43775, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMRESPONSE_GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMRESPONSEV0 = _descriptor.Descriptor( @@ -11510,8 +11548,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43220, - serialized_end=43678, + serialized_start=43327, + serialized_end=43785, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMRESPONSE = _descriptor.Descriptor( @@ -11546,8 +11584,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43030, - serialized_end=43689, + serialized_start=43137, + serialized_end=43796, ) @@ -11585,8 +11623,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=43820, - serialized_end=43883, + serialized_start=43927, + serialized_end=43990, ) _GETTOKENTOTALSUPPLYREQUEST = _descriptor.Descriptor( @@ -11621,8 +11659,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43692, - serialized_end=43894, + serialized_start=43799, + serialized_end=44001, ) @@ -11667,8 +11705,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=44315, - serialized_end=44435, + serialized_start=44422, + serialized_end=44542, ) _GETTOKENTOTALSUPPLYRESPONSE_GETTOKENTOTALSUPPLYRESPONSEV0 = _descriptor.Descriptor( @@ -11717,8 +11755,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44029, - serialized_end=44445, + serialized_start=44136, + serialized_end=44552, ) _GETTOKENTOTALSUPPLYRESPONSE = _descriptor.Descriptor( @@ -11753,8 +11791,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43897, - serialized_end=44456, + serialized_start=44004, + serialized_end=44563, ) @@ -11799,8 +11837,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=44566, - serialized_end=44658, + serialized_start=44673, + serialized_end=44765, ) _GETGROUPINFOREQUEST = _descriptor.Descriptor( @@ -11835,8 +11873,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44459, - serialized_end=44669, + serialized_start=44566, + serialized_end=44776, ) @@ -11874,8 +11912,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45027, - serialized_end=45079, + serialized_start=45134, + serialized_end=45186, ) _GETGROUPINFORESPONSE_GETGROUPINFORESPONSEV0_GROUPINFOENTRY = _descriptor.Descriptor( @@ -11912,8 +11950,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45082, - serialized_end=45234, + serialized_start=45189, + serialized_end=45341, ) _GETGROUPINFORESPONSE_GETGROUPINFORESPONSEV0_GROUPINFO = _descriptor.Descriptor( @@ -11948,8 +11986,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45237, - serialized_end=45375, + serialized_start=45344, + serialized_end=45482, ) _GETGROUPINFORESPONSE_GETGROUPINFORESPONSEV0 = _descriptor.Descriptor( @@ -11998,8 +12036,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44783, - serialized_end=45385, + serialized_start=44890, + serialized_end=45492, ) _GETGROUPINFORESPONSE = _descriptor.Descriptor( @@ -12034,8 +12072,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44672, - serialized_end=45396, + serialized_start=44779, + serialized_end=45503, ) @@ -12073,8 +12111,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45509, - serialized_end=45626, + serialized_start=45616, + serialized_end=45733, ) _GETGROUPINFOSREQUEST_GETGROUPINFOSREQUESTV0 = _descriptor.Descriptor( @@ -12135,8 +12173,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45629, - serialized_end=45881, + serialized_start=45736, + serialized_end=45988, ) _GETGROUPINFOSREQUEST = _descriptor.Descriptor( @@ -12171,8 +12209,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45399, - serialized_end=45892, + serialized_start=45506, + serialized_end=45999, ) @@ -12210,8 +12248,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45027, - serialized_end=45079, + serialized_start=45134, + serialized_end=45186, ) _GETGROUPINFOSRESPONSE_GETGROUPINFOSRESPONSEV0_GROUPPOSITIONINFOENTRY = _descriptor.Descriptor( @@ -12255,8 +12293,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=46313, - serialized_end=46508, + serialized_start=46420, + serialized_end=46615, ) _GETGROUPINFOSRESPONSE_GETGROUPINFOSRESPONSEV0_GROUPINFOS = _descriptor.Descriptor( @@ -12286,8 +12324,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=46511, - serialized_end=46641, + serialized_start=46618, + serialized_end=46748, ) _GETGROUPINFOSRESPONSE_GETGROUPINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -12336,8 +12374,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46009, - serialized_end=46651, + serialized_start=46116, + serialized_end=46758, ) _GETGROUPINFOSRESPONSE = _descriptor.Descriptor( @@ -12372,8 +12410,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45895, - serialized_end=46662, + serialized_start=46002, + serialized_end=46769, ) @@ -12411,8 +12449,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=46781, - serialized_end=46857, + serialized_start=46888, + serialized_end=46964, ) _GETGROUPACTIONSREQUEST_GETGROUPACTIONSREQUESTV0 = _descriptor.Descriptor( @@ -12487,8 +12525,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46860, - serialized_end=47188, + serialized_start=46967, + serialized_end=47295, ) _GETGROUPACTIONSREQUEST = _descriptor.Descriptor( @@ -12524,8 +12562,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46665, - serialized_end=47239, + serialized_start=46772, + serialized_end=47346, ) @@ -12575,8 +12613,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47621, - serialized_end=47712, + serialized_start=47728, + serialized_end=47819, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_BURNEVENT = _descriptor.Descriptor( @@ -12625,8 +12663,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47714, - serialized_end=47805, + serialized_start=47821, + serialized_end=47912, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_FREEZEEVENT = _descriptor.Descriptor( @@ -12668,8 +12706,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47807, - serialized_end=47881, + serialized_start=47914, + serialized_end=47988, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UNFREEZEEVENT = _descriptor.Descriptor( @@ -12711,8 +12749,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47883, - serialized_end=47959, + serialized_start=47990, + serialized_end=48066, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_DESTROYFROZENFUNDSEVENT = _descriptor.Descriptor( @@ -12761,8 +12799,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47961, - serialized_end=48063, + serialized_start=48068, + serialized_end=48170, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_SHAREDENCRYPTEDNOTE = _descriptor.Descriptor( @@ -12806,8 +12844,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=48065, - serialized_end=48165, + serialized_start=48172, + serialized_end=48272, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_PERSONALENCRYPTEDNOTE = _descriptor.Descriptor( @@ -12851,8 +12889,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=48167, - serialized_end=48290, + serialized_start=48274, + serialized_end=48397, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_EMERGENCYACTIONEVENT = _descriptor.Descriptor( @@ -12895,8 +12933,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48293, - serialized_end=48526, + serialized_start=48400, + serialized_end=48633, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_TOKENCONFIGUPDATEEVENT = _descriptor.Descriptor( @@ -12938,8 +12976,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48528, - serialized_end=48628, + serialized_start=48635, + serialized_end=48735, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UPDATEDIRECTPURCHASEPRICEEVENT_PRICEFORQUANTITY = _descriptor.Descriptor( @@ -12976,8 +13014,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39482, - serialized_end=39533, + serialized_start=39589, + serialized_end=39640, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UPDATEDIRECTPURCHASEPRICEEVENT_PRICINGSCHEDULE = _descriptor.Descriptor( @@ -13007,8 +13045,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=48920, - serialized_end=49092, + serialized_start=49027, + serialized_end=49199, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UPDATEDIRECTPURCHASEPRICEEVENT = _descriptor.Descriptor( @@ -13062,8 +13100,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48631, - serialized_end=49117, + serialized_start=48738, + serialized_end=49224, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_GROUPACTIONEVENT = _descriptor.Descriptor( @@ -13112,8 +13150,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=49120, - serialized_end=49500, + serialized_start=49227, + serialized_end=49607, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_DOCUMENTEVENT = _descriptor.Descriptor( @@ -13148,8 +13186,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=49503, - serialized_end=49642, + serialized_start=49610, + serialized_end=49749, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_DOCUMENTCREATEEVENT = _descriptor.Descriptor( @@ -13179,8 +13217,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=49644, - serialized_end=49691, + serialized_start=49751, + serialized_end=49798, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_CONTRACTUPDATEEVENT = _descriptor.Descriptor( @@ -13210,8 +13248,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=49693, - serialized_end=49740, + serialized_start=49800, + serialized_end=49847, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_CONTRACTEVENT = _descriptor.Descriptor( @@ -13246,8 +13284,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=49743, - serialized_end=49882, + serialized_start=49850, + serialized_end=49989, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_TOKENEVENT = _descriptor.Descriptor( @@ -13331,8 +13369,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=49885, - serialized_end=50862, + serialized_start=49992, + serialized_end=50969, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_GROUPACTIONENTRY = _descriptor.Descriptor( @@ -13369,8 +13407,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=50865, - serialized_end=51012, + serialized_start=50972, + serialized_end=51119, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_GROUPACTIONS = _descriptor.Descriptor( @@ -13400,8 +13438,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=51015, - serialized_end=51147, + serialized_start=51122, + serialized_end=51254, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0 = _descriptor.Descriptor( @@ -13450,8 +13488,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47362, - serialized_end=51157, + serialized_start=47469, + serialized_end=51264, ) _GETGROUPACTIONSRESPONSE = _descriptor.Descriptor( @@ -13486,8 +13524,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47242, - serialized_end=51168, + serialized_start=47349, + serialized_end=51275, ) @@ -13546,8 +13584,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=51306, - serialized_end=51512, + serialized_start=51413, + serialized_end=51619, ) _GETGROUPACTIONSIGNERSREQUEST = _descriptor.Descriptor( @@ -13583,8 +13621,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=51171, - serialized_end=51563, + serialized_start=51278, + serialized_end=51670, ) @@ -13622,8 +13660,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=51995, - serialized_end=52048, + serialized_start=52102, + serialized_end=52155, ) _GETGROUPACTIONSIGNERSRESPONSE_GETGROUPACTIONSIGNERSRESPONSEV0_GROUPACTIONSIGNERS = _descriptor.Descriptor( @@ -13653,8 +13691,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=52051, - serialized_end=52196, + serialized_start=52158, + serialized_end=52303, ) _GETGROUPACTIONSIGNERSRESPONSE_GETGROUPACTIONSIGNERSRESPONSEV0 = _descriptor.Descriptor( @@ -13703,8 +13741,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=51704, - serialized_end=52206, + serialized_start=51811, + serialized_end=52313, ) _GETGROUPACTIONSIGNERSRESPONSE = _descriptor.Descriptor( @@ -13739,8 +13777,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=51566, - serialized_end=52217, + serialized_start=51673, + serialized_end=52324, ) _PLATFORMSUBSCRIPTIONREQUEST_PLATFORMSUBSCRIPTIONREQUESTV0.fields_by_name['filter'].message_type = _PLATFORMFILTERV0 @@ -13773,14 +13811,19 @@ _PLATFORMEVENTV0_BLOCKCOMMITTED.containing_type = _PLATFORMEVENTV0 _PLATFORMEVENTV0_STATETRANSITIONFINALIZED.fields_by_name['meta'].message_type = _PLATFORMEVENTV0_BLOCKMETADATA _PLATFORMEVENTV0_STATETRANSITIONFINALIZED.containing_type = _PLATFORMEVENTV0 +_PLATFORMEVENTV0_KEEPALIVE.containing_type = _PLATFORMEVENTV0 _PLATFORMEVENTV0.fields_by_name['block_committed'].message_type = _PLATFORMEVENTV0_BLOCKCOMMITTED _PLATFORMEVENTV0.fields_by_name['state_transition_finalized'].message_type = _PLATFORMEVENTV0_STATETRANSITIONFINALIZED +_PLATFORMEVENTV0.fields_by_name['keepalive'].message_type = _PLATFORMEVENTV0_KEEPALIVE _PLATFORMEVENTV0.oneofs_by_name['event'].fields.append( _PLATFORMEVENTV0.fields_by_name['block_committed']) _PLATFORMEVENTV0.fields_by_name['block_committed'].containing_oneof = _PLATFORMEVENTV0.oneofs_by_name['event'] _PLATFORMEVENTV0.oneofs_by_name['event'].fields.append( _PLATFORMEVENTV0.fields_by_name['state_transition_finalized']) _PLATFORMEVENTV0.fields_by_name['state_transition_finalized'].containing_oneof = _PLATFORMEVENTV0.oneofs_by_name['event'] +_PLATFORMEVENTV0.oneofs_by_name['event'].fields.append( + _PLATFORMEVENTV0.fields_by_name['keepalive']) +_PLATFORMEVENTV0.fields_by_name['keepalive'].containing_oneof = _PLATFORMEVENTV0.oneofs_by_name['event'] _GETIDENTITYREQUEST_GETIDENTITYREQUESTV0.containing_type = _GETIDENTITYREQUEST _GETIDENTITYREQUEST.fields_by_name['v0'].message_type = _GETIDENTITYREQUEST_GETIDENTITYREQUESTV0 _GETIDENTITYREQUEST.oneofs_by_name['version'].fields.append( @@ -15252,6 +15295,13 @@ # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized) }) , + + 'Keepalive' : _reflection.GeneratedProtocolMessageType('Keepalive', (_message.Message,), { + 'DESCRIPTOR' : _PLATFORMEVENTV0_KEEPALIVE, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformEventV0.Keepalive) + }) + , 'DESCRIPTOR' : _PLATFORMEVENTV0, '__module__' : 'platform_pb2' # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformEventV0) @@ -15260,6 +15310,7 @@ _sym_db.RegisterMessage(PlatformEventV0.BlockMetadata) _sym_db.RegisterMessage(PlatformEventV0.BlockCommitted) _sym_db.RegisterMessage(PlatformEventV0.StateTransitionFinalized) +_sym_db.RegisterMessage(PlatformEventV0.Keepalive) Proof = _reflection.GeneratedProtocolMessageType('Proof', (_message.Message,), { 'DESCRIPTOR' : _PROOF, @@ -17647,8 +17698,8 @@ index=0, serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_start=52312, - serialized_end=59340, + serialized_start=52419, + serialized_end=59447, methods=[ _descriptor.MethodDescriptor( name='broadcastStateTransition', diff --git a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts index d1638d636c3..2b0162e4005 100644 --- a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts +++ b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts @@ -34,6 +34,9 @@ export namespace PlatformSubscriptionRequest { getFilter(): PlatformFilterV0 | undefined; setFilter(value?: PlatformFilterV0): void; + getKeepalive(): number; + setKeepalive(value: number): void; + serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): PlatformSubscriptionRequestV0.AsObject; static toObject(includeInstance: boolean, msg: PlatformSubscriptionRequestV0): PlatformSubscriptionRequestV0.AsObject; @@ -47,6 +50,7 @@ export namespace PlatformSubscriptionRequest { export namespace PlatformSubscriptionRequestV0 { export type AsObject = { filter?: PlatformFilterV0.AsObject, + keepalive: number, } } @@ -187,6 +191,11 @@ export class PlatformEventV0 extends jspb.Message { getStateTransitionFinalized(): PlatformEventV0.StateTransitionFinalized | undefined; setStateTransitionFinalized(value?: PlatformEventV0.StateTransitionFinalized): void; + hasKeepalive(): boolean; + clearKeepalive(): void; + getKeepalive(): PlatformEventV0.Keepalive | undefined; + setKeepalive(value?: PlatformEventV0.Keepalive): void; + getEventCase(): PlatformEventV0.EventCase; serializeBinary(): Uint8Array; toObject(includeInstance?: boolean): PlatformEventV0.AsObject; @@ -202,6 +211,7 @@ export namespace PlatformEventV0 { export type AsObject = { blockCommitted?: PlatformEventV0.BlockCommitted.AsObject, stateTransitionFinalized?: PlatformEventV0.StateTransitionFinalized.AsObject, + keepalive?: PlatformEventV0.Keepalive.AsObject, } export class BlockMetadata extends jspb.Message { @@ -288,10 +298,27 @@ export namespace PlatformEventV0 { } } + export class Keepalive extends jspb.Message { + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): Keepalive.AsObject; + static toObject(includeInstance: boolean, msg: Keepalive): Keepalive.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: Keepalive, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): Keepalive; + static deserializeBinaryFromReader(message: Keepalive, reader: jspb.BinaryReader): Keepalive; + } + + export namespace Keepalive { + export type AsObject = { + } + } + export enum EventCase { EVENT_NOT_SET = 0, BLOCK_COMMITTED = 1, STATE_TRANSITION_FINALIZED = 2, + KEEPALIVE = 3, } } diff --git a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js index 6a1b88ed549..492c61fa28a 100644 --- a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js +++ b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js @@ -464,6 +464,7 @@ goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0', null, { pro goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase', null, { proto }); @@ -698,6 +699,27 @@ if (goog.DEBUG && !COMPILED) { */ proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.displayName = 'proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized'; } +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.displayName = 'proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive'; +} /** * Generated by JsPbCodeGenerator. * @param {Array=} opt_data Optional initial data array, typically from a @@ -7211,7 +7233,8 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscription */ proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.toObject = function(includeInstance, msg) { var f, obj = { - filter: (f = msg.getFilter()) && proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(includeInstance, f) + filter: (f = msg.getFilter()) && proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(includeInstance, f), + keepalive: jspb.Message.getFieldWithDefault(msg, 2, 0) }; if (includeInstance) { @@ -7253,6 +7276,10 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscription reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader); msg.setFilter(value); break; + case 2: + var value = /** @type {number} */ (reader.readUint32()); + msg.setKeepalive(value); + break; default: reader.skipField(); break; @@ -7290,6 +7317,13 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscription proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter ); } + f = message.getKeepalive(); + if (f !== 0) { + writer.writeUint32( + 2, + f + ); + } }; @@ -7330,6 +7364,24 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscription }; +/** + * optional uint32 keepalive = 2; + * @return {number} + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.getKeepalive = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0)); +}; + + +/** + * @param {number} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0.prototype.setKeepalive = function(value) { + return jspb.Message.setProto3IntField(this, 2, value); +}; + + /** * optional PlatformSubscriptionRequestV0 v0 = 1; * @return {?proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0} @@ -8179,7 +8231,7 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.hasStateTransitionRes * @private {!Array>} * @const */ -proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_ = [[1,2]]; +proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_ = [[1,2,3]]; /** * @enum {number} @@ -8187,7 +8239,8 @@ proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_ = [[1,2]]; proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase = { EVENT_NOT_SET: 0, BLOCK_COMMITTED: 1, - STATE_TRANSITION_FINALIZED: 2 + STATE_TRANSITION_FINALIZED: 2, + KEEPALIVE: 3 }; /** @@ -8229,7 +8282,8 @@ proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.toObject = function(op proto.org.dash.platform.dapi.v0.PlatformEventV0.toObject = function(includeInstance, msg) { var f, obj = { blockCommitted: (f = msg.getBlockCommitted()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted.toObject(includeInstance, f), - stateTransitionFinalized: (f = msg.getStateTransitionFinalized()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.toObject(includeInstance, f) + stateTransitionFinalized: (f = msg.getStateTransitionFinalized()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.toObject(includeInstance, f), + keepalive: (f = msg.getKeepalive()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.toObject(includeInstance, f) }; if (includeInstance) { @@ -8276,6 +8330,11 @@ proto.org.dash.platform.dapi.v0.PlatformEventV0.deserializeBinaryFromReader = fu reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.deserializeBinaryFromReader); msg.setStateTransitionFinalized(value); break; + case 3: + var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.deserializeBinaryFromReader); + msg.setKeepalive(value); + break; default: reader.skipField(); break; @@ -8321,6 +8380,14 @@ proto.org.dash.platform.dapi.v0.PlatformEventV0.serializeBinaryToWriter = functi proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.serializeBinaryToWriter ); } + f = message.getKeepalive(); + if (f != null) { + writer.writeMessage( + 3, + f, + proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.serializeBinaryToWriter + ); + } }; @@ -8924,6 +8991,107 @@ proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized.prototy }; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { +/** + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.toObject(opt_includeInstance, this); +}; + + +/** + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; +}; +} + + +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive; + return proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); +}; + + +/** + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive.serializeBinaryToWriter = function(message, writer) { + var f = undefined; +}; + + /** * optional BlockCommitted block_committed = 1; * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommitted} @@ -8998,6 +9166,43 @@ proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.hasStateTransitionFina }; +/** + * optional Keepalive keepalive = 3; + * @return {?proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.getKeepalive = function() { + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive, 3)); +}; + + +/** + * @param {?proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive|undefined} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} returns this +*/ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.setKeepalive = function(value) { + return jspb.Message.setOneofWrapperField(this, 3, proto.org.dash.platform.dapi.v0.PlatformEventV0.oneofGroups_[0], value); +}; + + +/** + * Clears the message field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformEventV0} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.clearKeepalive = function() { + return this.setKeepalive(undefined); +}; + + +/** + * Returns whether this field is set. + * @return {boolean} + */ +proto.org.dash.platform.dapi.v0.PlatformEventV0.prototype.hasKeepalive = function() { + return jspb.Message.getField(this, 3) != null; +}; + + diff --git a/packages/rs-sdk/examples/platform_events.rs b/packages/rs-sdk/examples/platform_events.rs index ee7219719fe..704bb15b954 100644 --- a/packages/rs-sdk/examples/platform_events.rs +++ b/packages/rs-sdk/examples/platform_events.rs @@ -74,9 +74,17 @@ mod subscribe { let config = Config::load(); let sdk = setup_sdk(&config); + let address = sdk + .address_list() + .get_live_address() + .expect("no live DAPI address"); // sanity check - fetch current epoch to see if connection works let epoch = Epoch::fetch_current(&sdk).await.expect("fetch epoch"); - tracing::info!("Current epoch: {:?}", epoch); + tracing::info!( + ?address, + "Connection established; current epoch: {:?}", + epoch + ); // Subscribe to BlockCommitted only let filter_block = PlatformFilterV0 { @@ -86,7 +94,6 @@ mod subscribe { .subscribe_platform_events(filter_block) .await .expect("subscribe block_committed"); - // Subscribe to StateTransitionFinalized; optionally filter by tx hash if provided let tx_hash_bytes = config .state_transition_tx_hash_hex @@ -136,6 +143,7 @@ mod subscribe { } async fn worker(mut stream: Streaming, label: &str) { + let mut last_keepalive = std::time::Instant::now(); while let Some(message) = stream.next().await { match message { Ok(response) => { @@ -166,7 +174,9 @@ mod subscribe { } } PlatformEvent::Keepalive(_) => { - info!("{label}: id={sub_id} keepalive"); + let elapsed = last_keepalive.elapsed().as_secs(); + info!("{label}: id={sub_id} KeepAlive received after {elapsed} seconds"); + last_keepalive = std::time::Instant::now(); } } } From cb04779d20a846b69389a477d1511bab3bacf6c9 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Wed, 29 Oct 2025 12:50:34 +0100 Subject: [PATCH 21/40] test: exclude SubscribePlatformEvents from coverage checks --- .github/scripts/check-grpc-coverage.py | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/scripts/check-grpc-coverage.py b/.github/scripts/check-grpc-coverage.py index 62681b849e7..eb82fa38c41 100755 --- a/.github/scripts/check-grpc-coverage.py +++ b/.github/scripts/check-grpc-coverage.py @@ -14,6 +14,7 @@ # Queries that should be excluded from the check EXCLUDED_QUERIES = { 'broadcastStateTransition', # Explicitly excluded as per requirement + 'SubscribePlatformEvents', # Streaming RPC, excluded } # Mapping of proto query names to their expected SDK implementations From 0f2d368f11c1d7de7c6c0e2bd4c912137ccce777 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Thu, 30 Oct 2025 15:11:30 +0100 Subject: [PATCH 22/40] build: bump version to 2.2.0-dev.1 to make migrations run --- .yarn/cache/fsevents-patch-19706e7e35-10.zip | Bin 23750 -> 0 bytes Cargo.lock | 74 +++++++++--------- Cargo.toml | 2 +- package.json | 2 +- packages/bench-suite/package.json | 2 +- packages/dapi-grpc/package.json | 2 +- packages/dapi/package.json | 2 +- packages/dash-spv/package.json | 2 +- packages/dashmate/package.json | 2 +- packages/dashpay-contract/package.json | 2 +- packages/dpns-contract/package.json | 2 +- packages/feature-flags-contract/package.json | 2 +- packages/js-dapi-client/package.json | 2 +- packages/js-dash-sdk/package.json | 2 +- packages/js-evo-sdk/package.json | 2 +- packages/js-grpc-common/package.json | 2 +- packages/keyword-search-contract/package.json | 2 +- .../package.json | 2 +- packages/platform-test-suite/package.json | 2 +- packages/token-history-contract/package.json | 2 +- packages/wallet-lib/package.json | 2 +- packages/wallet-utils-contract/package.json | 2 +- packages/wasm-dpp/package.json | 2 +- packages/wasm-drive-verify/package.json | 2 +- packages/wasm-sdk/package.json | 2 +- packages/withdrawals-contract/package.json | 2 +- 26 files changed, 61 insertions(+), 61 deletions(-) delete mode 100644 .yarn/cache/fsevents-patch-19706e7e35-10.zip diff --git a/.yarn/cache/fsevents-patch-19706e7e35-10.zip b/.yarn/cache/fsevents-patch-19706e7e35-10.zip deleted file mode 100644 index aff1ab12ce57f312cc3bc58c78597020f7980e62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23750 zcmbrm1yozz);0>XxECvK#oZ~E;tmB$aVzfb5?qQyDNrQEOR-|b2~w;ScMa~YAwY8J zd(Qdpz5l)6`2R7!jEucx&-tupt~vKuD|^qKx2n&c6C?foys4hW_^0yk1MXAl;%a4W z=Iml$(9fiGGLEft5srW3bACa z^20Bo`Gos1=spNzXk~xoaF?yeJLK7|FW{te1+oI^hT|?OQwEDk^DU8C^Xs!=H+qKT z+EDYGD;VxE+nW`Sea)y3Q=u%9ps%`6qz?BX^$Jz?k8&F`UHsOMgJ;U-hW?UyAEb*m z5!T@9rY*G=x};cM^>d8Q;*I-r@y$ryZt9JSE36#F6#8aq)n5@4xR+WBtd<+%c10-0 z1IpdHzS+&K21*J{xD%w>#~sgW#57!z)^uY{@i7^nIim|CEB6L2>=kwL7N1*NhSBX& zjZ05vcTXh3QdS*my}#Tl#IQwZvFtrk@sVqLyq5hO6y!@2&L2$|uCNk6r|GS#nHHjg zotQ}y^~pbP`MiRNdeGvAlx>DzK+Jfd2daq6XRUqTO}=TG-q^jM#iF>*LNEDwYxPk# zKJyaY!bGmz7IPn|Y^=gm#Uic0%hZH4x_vS2Q$W)uQE;rE9~W+Jt{D{GcZZH~>-Gan4YTXDPDH;2>@8{T2Go2T!8R7WTfm^L!m zW^H<#x?r0Ey0CT+&=AP&8l5=HoUu% zfP8-Urj5jTim#Z5;OEY@Asu#w{tASFV<%Md1JX+LXX`=+ulNJ`Np%0Iljp$ss~`5i z!!11e-jbVS9H~W>UZh>HM})t>3ggnjEyPG$96eaG@6~2M*Lv8NbUmwIzHDWC#+;8z8E)Yf_myQdFVJq*o6dQ)%|vi|v<`t7?+N%P>ITU3VU zc6)=Mz~_c@ho5&2HdB{QYpj#G`=|NfLwF5;uUszN^XD?Qx6P=#tF^756JLe!Vt z5T-jGm*`;X5Ao)9=PjQb6BhJX(MT>ilx8577f@{Zn~ zDd-D_WZ9&Z&}uMu&^vLz1&h~T1vB@<)sFXX1VykjFx%vvs)I~5Q$s!8#kI2PYRzjc ze!O0vPiGOF7=2b7Do1QGr)$kgAk?Zq)h(U#+)yexIX}wJQ;z+(8@VC{Uy_bI3v`68r7{P5bWL3=a@>jmWpRL&bfh@5r<>vrf3 z$NDAm2o@hY4*TKMu-+9DgTqxuezwVD%M}q-aLF}8>nZr_M63(W3Gr-twwQe;F3nLN ze5Xwg+GZx3@~4-$RulE&E#|J30*XXWZTcBgZ$Z?+9|<=Gdj@3;yldm}$R74giloJ_ zHthE9$QLKGbWY0TpLCFz8O~mveHt1q3}a4ww^l}mz2k=0nfBwdb!&bg7Za{^fiX(@ zhmWDDxdzqyp2D0Wy?VI30Y~qaEwn?h%T?`uef#$p?bmlYRRXVd3~g#cajD6Q^%*=LfTq+2QEK!5n2q!ZXnGe~@>NO@9CMx$qkkuSdDAj)HTa&AeCqj7qb) z=mT1u$#$k?F=ns7UF zu!*U;ZK%~c8K1ov(XD01xfR)LZAvy>t(-G|Ay`x`#e557>)sE~6bq$| zSI)9s`t?#QSaFay_^}kMg&EZ`>4>6KNxvTxdt<5U=CWK6wgDGI#j%UX#X(|^(osjX z!U~>^VVPx<{_I-9>9XR?=$1IRG#Eqj7vo8To$# zsgzFR=?mLn`>6Ly36G*m1O>G#F`v7bOcrhNb3w1OYKpGbY<9zVUR=+RbXfpR66MNV zPkfBZNGw97Jnw;I7t+ETN&9UD^YmE3d2?q4Gij#b#zPM-MfZXgJF&N|sP~3!#T9MB zK85>_#K-6ci6k(~Tw*H`CstZD$xqbCpbL1oMvYW6-A|Ga^RY2&Q*V*q+XyirT~DDh zQ@y^9DSoj+TLjjxKhX-J0sxB}^R`1mcm+0vX{5Y1wJ+MfOrHGS^G zx>-qF?k;PJ^dVqZHq*hm2*&lncQ}i_C z*JB7PgrOaMH*lg|VJ{w+@Cgq)Mp>^_b}2QZsgt6ZTw(c6 zppr5--;J38EkCOUh`*L>YnQ@i#CCZo&FyJ@Yt;Ivdna;D?36X^>SC6&(iFIdPI|78 znB$Z2L%mVlMYXC*%d#DvafR8Je6%%`P*@xNUL{xI)ow2i#4E+;dggHBj+P{A+|#QOSYF48l!Kj^X>vYpfD zY{>FMLcD>?NP&yUhBsXD^Jqs0sqcS>u+LKIHCn`< ze!KA#IEoXU(S)_AsT#U3k+eKbb*gOv& zQH%1QdO*R)&@3)UqxB`7zQqo3PbB`%@=>MNaOU&DxznHabCQZ`|Fsbv>={-s&j^@u zglSikOT;9pdU?H#`JGy$M7(UOp4Q%1`FdEMXnn|Joh>Ba%OKT-;&r4t5W<+D-enL8 z)Y?=ih=^6ky*5^dDaSM$RY@Hz<5Bvtl1e3~J$`WQ(ESPsLVe0w z&CSr<9128)4L4=FTKGoZhiA4|ugfy#|1j=yWnI%y$soaZDz8m{{D<%Pv(#~=lZE1c%i zH)z@hGk?yg!_Zx@Ff?pkO{2q1ZOwKL_k=!bvo(Z?*99ufhxULet9j!xD@GBM%!KJb z^{!>KuZ2}vtX~y=x=<*NRz*g)nPi|B?n4nIW8)6}o~?x%tS#*8S*f*So)NV8Q}6?% zbVc(aRd8ubT)S(!v)m39AUi`)MUC?86qz-R10zC&r-QXd*gAAhIApmt(L#3JNPd8H zbd3IIS&nDe0%k}WnwJrKjDWFt!7U;Cr%b1sO#JtLEcn4#EPN)oayrLvAMJ3t1BK3L zN*&gEa6Y zgzibU=N$Q?O0`hZUOR=@SL_YMyc8^<{~mT-<5pwUw|`@|z(jvANz9s-@~LvyO=uD? zSnPIXjzck2VlwT5*!XybgkaPm*@nYoVYJH82!c{oFxFe(vMu;9dEJw7?dGiaQ}e}X z*XGS0bx^M=RRNoBNU|7f`|W-HXx4t0R`dHsRY%7kiw+gfcTL!xDcm(C{Ul2eVHLFj z3XfS7TnRp8qwN09M!D1-Ta&eyP ze(M)nU!U$%-(w`0@SAAx=hWb_r!dS@M@)?ErKpdFeh{Q zB`(FBd-Vi)2CtYxj5|`(Hw;m|fwhmrb|~Ccg$mZXbPyw5SMRyk`$Qg{Lx@|%$?eQ= zjmC`5wS@QTcO6@f@0xITpWFD4g<0w!Cn+~DCEb11ph}B!{j9+aF8!)2-G#47S1t2fF^BsQo@>38}uqtw7ziODZcJAH zyRnFvNuO|8#V_j8&Y8pMm`rm|GI&(~P_TXdqq zKhxOtw8~%UWnw${hqEl~1(xekB6N`UX^0A+|ueokZa+6pGt zrOy5m8O5Y#b`KxL-M9+5!@mFQIWA5|;HSt3AyZHh1O0%(UTxs)t3S8%98@B$k{s=r z*)GYJoo&BS(FgZ^)VbD~Fy}-iOb5@It?WeCZ>DN^)2@zQ-=v?OReF%VZifY~;}l57 zZGN9zTcW>+IJI5 zYCFcbgRx4=TRF3~heK85s9zD>#jpg&iz>?GEgL-$ZhJsjp_SfPlcD33!U%&9r^`Gl ztx_n36m$V*r;R@S@VuaFv{LAqlfcjkno-3qnsDm!;$e}69x~wQ)sGXDR>&LF(4*kX z{aaQHZj{_8Ft=} zg7&nJ-=i9RpiI=%)NkD<-5sxE!fLq9KM}p8Z432S1uRXZ>g3FP(FyJ`e6*iD3`0!; zx3oBd{nLSb}?m%z& z(x)Cq%86jCDPk5%%{a!9h_!C2rO(hgv>Pmk^PdrqRJZmS>dgG$kXiS39xfkR1b=Pi z`VpEzX6@Vl*<@Ng@X>TKW5?zBZ0^;bHh*5pWmd6P+Qd}I5FeBT9MS;pN7=Fp27a&`IW=dA)o2q z?8hDStNLk*!h5iNRR~KP?3e16CwUn9D2qYhcgw0#Gs``{0`f~{IU^CEgq;r8>#G^C z$Q-2L;eAg8;;ME1#E;>qDA;5jwCQXXpm{1cAWAsS&+c&`f9CgoqicF z0tNr8Lqhgvm!cBirU#X3+;>0Y1zZ(&l!>f``AR{&1zv2QLlj0+gL9alkF76)Q-Ax^ z8+KwX^MBlNmR@LL%sx`qws&4EB7HG4TdOT0g5pY7{`uISWx;b~#mFvlxp(%uX40{* zpK)S#@f%y2xEQ}r_I{{nYHhk`8YnPA297G6SezLyr)?=##TVr_87r>LY;Z4Zq@1kv zSkz*rcrVP;N2Np>nP#1(c0d>N1uq^jkj7W%4>C*~1d^(&Dtn?rs@3uO8-`a)wm z@99K7o33U)$l$LBS8{Z}o)<62MO#nHJ(!xMFnoS3p>Viwnb){xuAAWfNW%{w#IWA< zBvwLsMC;lKhCZmTS=6zyB1#yLNPnn?h0g5ERn!irepK`<61I zR>htj|0>!Y+<8C$>3NOFm6$B|Sfg&(n;8tB$||ktGM|77oGr_fE7k)Qr0SvL@ziTl zpY-a14L*9pwr6?CsKL{%mfza&;(@U^`-6ixR8q+#K~&|F8Hv`dnBM{o##7VT&uph9 z%V#@cS{e0&GQTpK?O^%Un&%nXQV)2E|Cp!W+q3p1B{i;^m5gc4sr769T2El|oHRl2 zkU7z|)n9*EalC|R1&D8pI>7L*m16pOcZHO2@-FU#d-_=Cuv2cOP5+_zD1^wV-E!06vQDfXSrZ!x4rWKPYo14aaQ=XcttIJGF zM5(Hc)?2X_nq@HFjf_*-7cN|{LM9ZqpFgk>T!@EfPDg|d|2|u#u)@sQX*OMwUV%#L z^!_kJ!32-AhQQkm>DeicHLB`#>m-DCg?H8Yugco(x17q^j)+#xAATt+w$T+Nqz?|- z``mGstpE%69OY?w_OSRLYwC?B$=^5zHo)J#_*B+*=_}Xh8(pAQrK<8PHW{NRdIHl` z?+zWbd@15Hzj;llm@|@EefK8R$#TIb)qKA{nbDP@&ud)8A;03R|G*Jghc(VZ(R?AL z(7&ism#r?`F|^}+k@bjP$HtgLT=!ZvAJvQ{C!nr2b>yj~aKb-gr6VgmmolPX_gaQ~ z7s!%>YgHfW^kHa+w`Kn!%4s%bM52ydPMEg)-e66uuKZPwfz?#J6JA#n#xwjhb+(09 z=_BMG9>**>ZG$@jb=hjditDnmVVQ$FfFT>c1^vMtBj}OI+JdRrZRSnaS@+e67n_%3 zsMO|Z$rvAtrQMDEc=_>oIr850*g2hs?Z@@;g5!2sFkQ!toUo&=tGV~VZl5viy+>|m zfLyRB6SVy$bSe4lIes$m?IRD1vIniQsr;(21Gq`eg1Qen(Y(WvDA+UgupQT&ng z^1Z(rdKIJaJGUiF!UD&R!P*&;WXSVP$OtqT6R~3*20plOwFyGs zoa?r>z3teN0*AcGy2Du8kxS;;0AvTn14=d{g8=#+?jr6HoJ}(d?^3$U|Ae;vGZd7dv7wW%$-330%@7X7pMgF zp@!SPN4WKa)Sz6EpyFOwq-(j8v2>TrLb@M8xk=0Xh|uf-jPpoNp2yVYz$V$8fe)7!v?T3e3m`(_o4ly9Les?MWq_KWzTfesQC0++t_5u^m zD_#QKQoy<~V5|YarfZbq>`H2+>)iU7?ZbKk@IYo%b8;Ot05!X^oD=CurVDzqQk4pk zfLKAz1=5L0APk-wr}RPmy)XUrV}Kk>{~=$r!sA_pZGdr(dQR`P5E zg}z*(AD$&|LT!UY)~9aEf3B|I1(G9NDiJ}WK*Jay{-*d#aQK<{9&~O!^RFA55;q;*`LCIb6Ga!{82 zYk;=xg8+Ob0kQV>zf3}iL;}N;fYc$Fn`M0PB3aSDfhqVmFs*t38UtWFFxe(}E}k0F zor|!H9EF~a^#lG!u;pKm(po;S_XEYEFPjd|^!P$ZH^=B6ivFJXmr28P|1oL&t`k`~ z5+Oj15PRUc|2r%AxLXg;Z1SFJIpjc;b%fm0P>A>aW`CeoUc7J>YPe7WAoYBJ0G|98 z@2^QpHxlEZe|&Un{WK}cuE#EAn~-7w_>+_RA=Am1pxJduFVsoOql=&i5%wROq_hO! zGhz?+3ABCCDNID*->_^`s5{r(-9{@;x$k=ednk(B)f0dhB_IS_;P_w10Addi{wH6V z$wD9ZFO%_rP*!0$IT&!hivoL)-N6uJ4#6a+CVJ*|kGn!suynfrGtUKBxK!j7nCqfB zdCcP#_{C*xlIyMrnVM+Ci&D9%V^8>t%l)J?u$5Y=iO)+s(j{i%*x!p%wW(;&M{vdT zO%rJ=wPF*|p3jSw{)uDa*2J=)sbk~TJYT7M zJn+RefH>a)uQVUGG#{gs2D9`8yVM20R2Wr91XU-a`<*hcw+U|snVLaF`Rnd?4!lB4 zS#{5Kc2RX6BiL^AG(8*!s6xv^6CRS{oC)S?>v$|e!b_wuOIPtqZ_ssk&~(JZ%a6O? z$?|$@@_HNbHqvJqQmeIumv5Lm81QCLs*T{6+Mw$Ub-y#_^_J!p;>23VI@7~5v#SN+&-28D*^?SM;(^OLnEWnu_o2K3!&A?lo~uoW{B7M6TIe?tT@&gVVV(O&tm{TJ%`u zHX;GQ556R?MM1~qzqj2#%?DZk=>1UB@k<)9h;^6q(g|ejb)L%*=I7 z8&CX*&X_6h`dsbk@^iD(jZ9NneNmr=YsreSPAyB}-Nvi86g%kY`P|z3#Nrt~t2bnlc0Y zC6!^SQ~j2yv%zIWyZ)Un z&)CM7BvV|UEHFx?Es!AltwdJT_DLa$o7cOxFCb9HX?>Z041$P(vv|2V+h3v@lw@!! zx*48Gux`;|;z?tuFbnFJA`e3Pa{kq{m#)gB`1BATsjBXb6B8r&NW9KG2OAmxKm%ES zHFvR>L>mX9DaI0-`V1H|sI}qs`s3Y8bCPd^3tO5N)~)uEU--UK0OWHgXSUa7f3PM6g~5DSu#PcCt7R1 zg~D=`^VC9tZqU3y$e<$joZ1( z%gUsS>fCpHt*50bv(J(y<$P*=;|8h^zei66+Y0s2xXm40!ItxdF0V9b|D(k>c6?*q zGXj2BCK7dV(#9Gaun`mk9^SzQeolY!Y*)D8_80l__i=B`VVv9{wee>z*1fdB!^K-? zG1{!Boq^%sVvPTIzH8R=UT64B=}9Orx%J`au*s4B+SvkG^YtUKa(^yKhU9Fy*MNx^ zJD12}`KK9KZW+rwrcv&ot>=~+9=iDcuW8}46}{=Wr}QS&fh5COV0L@Wyz48&z?nqu z7)8V%e0QAuM|unVmbU4WOaImbQw`o7R=w+K`7UvY!O1w_(Z05u2;>m(2jKVSxJQyz z=zv-&;7`kg5XrX2+(&LIxo9mGty#+?!{hu7Pru)63MSjFG?zjHC)eJ+W~nyQwpvTi zLVCR!u_348dVSb!r;K`6(^2(Q`GswMhJ}4-Jelu^W&yC@8a^w1hhlj;N26*Vvff*h z?WX&eM4eFf{){E_S)s|DrW#nVFw!Mc6n=u+EC@B=)@jz+P8nU zp|*FRl64d%S<+`@URW}?Ss6J;;XOri(^RR*apbx@u<6RTDGMy4CXLBbvm~jvcLV4v z3Yck`@6+HuoGy;_f^$~Q_OXGQx#er8Tsdn9g+FHipcbkPQ=O1@oZUfH)>ILR&L27^ z25NW?v}=+zeTCTK;N(=+c8xX{6z`7LKWApCI`Xl5k%2a?aubsUO$_<#~Df3rdmz>4F9)81cc; zHj7?@`a~%nDZuw)pjFgJizWUR|o8-PtNc(r~)6OYHs&J+r5o2Bdt(?a132Ta6x-AE% z*3oR*O`=DNh7lzsCmZb0*s1|7EXZKQDb;yUUQIOCcB>gDo`)Eahf%-ye#EN8#jTag zGbDPz(yUjiuoUW>zi+O9hV|Lx$i% z#(->R9)pc+agSPD+k27}SD*2OpvB~bx?lSo!&c-U=obuFedT|o`6s;)4m*SOku=%Qezs37YxDy$bsx6;b8T)U`m|~rf5UuP8Dyt3l)`@Icfa>IH5ghN@ z;dqkK+h&e%5~3i_m0rJ@XiZOY zjkY)L-ey;POM9o+UfTZBT(_VqCFHZ(IY@%~3S_dUCd{M~_b!oTo8cncxKAArQjse- z;o9LO#6kG5w$)M*`9&fqNyx=vrz3~WXS_BFZClrm?&tmB*}%+yh1L{j9<@` z-~YSuIE^SXZMInOj|bKCovAfNwSzHzgq8N6+=psR@%9h-MiT1^fF1rx? zu;~6@zl!hGaZ5>c+FC}JU+CI89Gfi=+bbWjG2XYlfKQ^`#S=UPvI_q~jdhhaj)C6B z<`ACBEhj;#e|;{&0Va!*xr0n`?g=&DEJs55e^tc-<3)Fxa3GJ1Qq2&3?A{|zHe_`C;K?;$F}@k;T4Y>mQl!hBpa^?AUr z&xholwC>y+WrX*H;G||ucgl_Tzsd*(=FeKbn^;({LANw)Er$Bo0T8OhS#se zSPnvPLNoGt%wO|j_1SthA^1zlewegJGp z#^w+JLz_v?MPe<_?u}V6q5%vZ9+IZ4^d_7VzGe1qVt2jCX9nDdb$qA~_i8%o1*ak_ z=-WikA2`?4!}E#N=^*Ye&ScUl(qYhB(2ZsA#_iYEqFqQT4CR_M0wy;~+jSL35!|W( zs-Dne01_W?2nB!@PUrTPQfXsgK8c;uMXuv}huj03Q2|LUo$^Jl6MNW|IA#%lTa(4J z@mYIDb?5N#fTW1Wnu!6st13O-2k~i7sw+t4Iizw{gv%TXcss^7H)p?SR%Q=`$wVLi zZIWGSAIhs;;l{soc_TT{4WBv!Ym39r#cege=37>4PB#Fwrb6Hk=Qy{(I78QoBS@hn zd=N663|0Vrn_zJmpuGUEZH|4-2jFL;^9R>UO9De$39gUPt{?mlUrc*0n@9qsj1pkR z5dm-sy|@7IlK{LzIyn8QG!4SJu6h!@t0TXr^3@vyDdK;XT6uy3)5rvuJPE8ml3(Ng z6%h3xFh$@T++AL|{RZTD0F_uK8?^B{0h=g`-DFwY~=KO7zpu>UPsrUi0&I|hM7_pjZ# zK2>f@zjk&%Nz&SU?d*FhHM!*_2UesIsb+EiQ0Qz${fENiPvmRwCn~{yEC)G%hxWw& z7X=@rC+qGX!1;&))O^HW2`SR+kSDTmP%Ml&B0$Q_Tt2u$S`uW&`s9JX$Y6@=eYEQ! zcp=_(##7m8NqIo|Wc`DZz=6?I8T4EF-&~KsX$pSZy%d^|J$n#&s)&Zu&QDe9d0nm<<4SeU=* z0zwP|;$U7+%z$J9#ACpx3WO{MhW1nfvXWq=PbH|C_#dMbLzoVTo{SCJCY>gG`84tf z+P@f#=lzR88P~rUR3ZOE8Kn6IulEx2G}LZ?;Xf3BJTiZS0mPFZ0ek<13=R@Hc)bHV zr;r?&dj?G7rB(kOuU>Fx$v+~bl!bqkoHcfetN3Skc=YLT$}RI}ce9jn=d$Y*vey zvp+kgSpL?{!)v|+b;gCik5IP}qN(Yg5`tpk`tVT=osUoiwV?qjyOVQf;NWj;kl{0f zB*5gF4uu4(OyYpO+ZQxjN4Ekr*XgxDAt)Peh(UyrAk-6As;FC*aYj@+qF%6BDMG~Y z3}}BApLzg)EJFhpb^{#UPFaPd%p%eSp)YV(pREaD1kxWx{GjbQB!DBYgX!Cm*VQo) zk!Pf@@#(2}Yuz94B7N!G(bu10(8@qDdIkuj!p?XwKr+w-V^_KcY0>BFypdz{LCEW> z7-rHKZ=e)CBFsJ-RAFb-k*D+zZ>sSLLL!k=89ssNsiNEx5+|>2>7_8%oA-esft(+? zpd$Uw4>bZydsrknJDSW(k>CL<9iA+0E*-5*`_B#Eup6<>oh;xXk|RWVEo-fxG@d;E zvFZ|H+Z1&#KEo-}Y_3p$rsi5@(41joF_&Ggm%U%fH&w}d_#xP!dB)lzGjX4r92;zY zv^?C`!$pc+|E^LTyKlPUmskxUcD+mj7uJ-4{6J=0l#x+Dl5WZR+^1**Eeab+`{tSA zR!8NrmNda-G3^fB;=H*OhxaMbMu6{a0fG;U6V>mNqRm7WufI=t){xJb@C8&~7cTaN z9e9U{RiN}%Vd69~@IC}|tvPgQI3hcDMp#N}s-t0ycI6HfX0F4q#D@*)`&0 zXI@t9%seV7qq4N=vjzM0`m(68d>W}h1?W+>*ogA<(44((nucupRjX=Qxw4qE`lP*6 znucS#*O#2)sa31I8|Fi5y}!o>5reXhA+cliS$o$yjlgv8#hl8iRpPvx(!B-|c~`n8 z0r|2HwkLrJd)JQ|fjVA`IfYZJ@16t>8box%=Vx&a4kD+&&%R$kk2yZER(gCUV^PcdvUW|(#3~W!kjf`1 z<;mQ|IQ6diRWGALtTa2`?4i^^Ac`0R)MBkf_VVZCwxitM@z;u`lrvY-^;Jv38YZzC z(*Pcmqee9;o52B`yDWNIfi27Epg&O1MHapKmj*=4QI%Pz_!2F`jOPnig$`biE4T0^ zf`!RZXbo}V^i$qIl`N{9PVy;TA`}2YlKeArCnM+_e1E^z8k$P)M0%Kr1OJ46ZKX0+ zVPr-GAMkB`9oYvftnGw0-K~%c$#e_1pifX*2 z&4J96^N=0ph{`1PAs~8ldfTmpJF*K~Uc0dOX3>Z5o;#iN06gYxvXmq*`AMzk`D+Zb zz)C_=UK<$nzup2=R-`gO>xcCio9ahRracr`r7_}^dE%w@6L|;q#TCgB@;Xmx5ChVl z#xvJ_7Qrq0G?}Z{?o5xQ7_*GTP@%_de2DALSK4i#9A9<$f;Ot1Udh($J9TltTCBR!8Q%X;~sv$r3C`!*}WO&E2%3w<4m-uevY&pj8yHD;vD&)3O z&tE)qceL7lY&^BtOuf?NG^lAMo25&+<}~Zhif-h6d=5dld_WFKlR+elHpcttcfLco z2tW~s%^*csBGmry#K7zUPUt$)uxpx?pJ18Mh)7e;yB|zwv_CfEDV{|%G^!qh? z?Xm2}%kG*=g)@5&dp*U-{jPH+=0Sl7AYr1dsqQzRiWxAUOi+VeIv>SFg5bCor zpkatOJ8q*38N?YL*YF+}PI*kZ=p_I|=Q1aNqM_q_{r5o<<&Jwd!fWzK;1oA=e?!O9 zD;?Wen{Xaa%4D7)yXTN^$>oG9kLOH0Z=|jehG(8db=P*0{^GCk2D$*MTgy5l%+>=q zlVu${`RoE?lGa}aVXP;bmC4$*P7?h@N{}mlP~B}_paZ8}Tyh27*oXI%SW5XDV~hhB z2kJ(1b3qPy{_{<4M#jIAj*ZWlo&^PYFS)KkKW0J2DITbC)*AwSH+f1*`_qL5KFK4o zym*LlPqANIOf9FPgQLQS8w4pHmVUZV4@Iy3P69D9{G{#k$qToHuuOs!{W5^OT)KZU zJAgq&9%};ib&YDu5O0f5bsqAc>gxIbO107#rEbS)`{ld=uYA^xHp z?Z>@#OBoI3{viK0rMrSy!lf7)16g7Yf!D5LLl>4!IfKn%4>2NN@KW08BgrsDKP(I> z@|_Y;4KVE0j9Ji{DN2LnS?wJIBWP_9)z;a3MsxCVz_yLKBze@gw*y*74^V=Q;jh6< z!rbD@i*tU-_WM?QF~e#Tke+k>EA7(#uIxsGaofwUr~C!@yE0}rg84qDCBf}vSBfJl zk8=c4QD=COj|3rX!FbKg<5|+!oBmu^uM>*0Cp_!pi@pLGn`mP~o*s(rJ-=%F zaI@RpXr1+ySl3t`t2(MzSJ9Z+$+fyBQH3j3zm3+vaA}DvC^<(#n`|!>OVBZ zB~rDZJeghq*o4WQguAvoF*$ege%NYqtB*SOph>t)U2+X={fRlycXYceuTRH{ANXF@ zpgTKB&@^OS-+D)nnwn9gThs~FneysfbPv*2H1F?Wb1Y$J#N6P{-5~S~wk@>C(l%oC zM-uW)5+p8+_xjDKy&dFzz{4kEBA)98-C*&<(8P~XU&X| z<@pK1iFx-f90eWOHUYTI1EIz>Neb-OF$DlAO(j4h9AilY z6R!8^5YO3a?oiP}O+IWD|9F|fIQeIl|7tiwYR(AIpJtY=30;| zwOrDi_m%Mw++@$#KEm+@6{Kpz`?4VrpBmq`YfRi+%_;l`8cL;JHBUIw>C!be-Jd8V z$K1mq$v1(IF`FGiNePM4yuw{Iy>25rmX>s{dDg@hCh%cs)eABF*^r1ha0+BL`TCq* zwCO}*$=#LG^fWM)4|Q%TMkz4TQ4&1rie%;z`Boz+K=(DB>1mv11C5=|r9M;QGMRFo z8+a%X|6-E<)a~@DUoVNZ<;YafD-eB4L|?|(Lmh#>Wx$yrUY(c7qpgrsj_4r}dDhG$ zo$o>KksN*SNO6J9jp07`%olyDG09?CmPO_|L?wul5$brcE0iXjpm0)C5CEa?OeAgQ zjfTfJtOsrRu*T)KfuKH}T~YVHOp0-fUf!l+=-}*jz6qjab1QoEH&UWh_^=d^6Miiv z8x&8{%m;6WqzeDycd>xH?MNnqC}0?ix=Iw|GM?$<@S@(YOK&Xsqlm14^i&qzXf|D5 zI$_=PzTa4K3&Wm^IaH#IF2L`VT{eny?frHBL+aFFGP+=pn*73o>)iR<;7W=JsKEl` zrZ2iEh_QJ!(}8ZWjHOrx-*@_qRtn^=MHoS^mRb^T?~tYq9}XS<_ecvVbdk zp?9b6HjDu7YQkIHo|qj{L?_GS1yYonL5CbkL(%Q0VN2uahk4W+{VyP}*j;&98e^Tq z#|crINm(fzy3T9TC!|&BHPR~^M!Ca>N*D#30^jKI53O!!W zOAJ}ME9Nmrx0O4>o=gI%Xe7vfIS?16rA7*MU6bG>1_^xl4T6EZ>VL>VM=Ya{LXR$k z7HLnw%|B&31Y0M7r5$Eto)i$6=LJYsI@ZKopI-kk?W75**GAw(4$yZEARRWzG?Vlg zVw~j_2B1HO=BYjE66|DO)x_h={jk+rZ}r>FD?U}9za=l|grMG?!DxRbGs`ZZ5=6`F z4IX)~6+4SA>x@1d#hAC{lu*4cJOym|ul@47k*I}G1muf)v~HSSP|2Sh`gS!UL`xwj zd(FN})L;|DR!4)bb8=uGWrGa<}{14u?UR)(vm@D@^?M0bkKBMo3TnwsMfJYBy&3L&fw zGlAfDx9I`K-D$3fu9r@1+s~W$9|q}w`O0fTPUd%(b9}26l=|(+ek^}bPTzlq+=!Ff zu7=%HZ;ah*tdTg`Jnb+O#w?onfM&?67GbsvzkVM(8noAbITuDcl?|Kw2v6w1Tngma zBtbdlngARn|D2gmx~??w47>d@SkVn{OFf6{_xkM+!rOP{Ou1l9Shx4Q@dJ6MV}XWF zr_Ot3Bqz7{`Vdy&>gI<)$8iA9&2UG8uU#?V6#qkDMJ+dX&Awedb+%Qdv&RTdo`vgG31z*oR@Z7H*rJbY@NI3!a zkm#gLMSpZ6J8Z*$GzxpXK-#3HI36=%nDym>?aCnt$WUCv=2rv9!TeXQ)D^B&XZ)!7 z9soyB2l1`=Clhqju-(*bl$tx!eoCY8c4>Ok@UBZpub*?@o*B?*#qYTv5vnO{CE?bM z@J7`u*0*!dOcJISdmL-kj@w1a3G-!v*$!N4W1a`Z!=2?3PNFB8_3m#m+69=q!D3gZ z0Zs!$1gExPWly(<%#z^L*5}4+!CYrw94EksZs21aqE%azF(4(Z31{HZ*9p8CdYivz zh6}qjayp&!3kti16aqy7!9H+$3uA&byrl$+c<^MEhtIdwtw@C~)@vBYY(s&egSft`e)q4!ae5@5~b)l;}U=EOYSipGz0QF6d`WfAmYKA9B~1nFiYIt9ii4X(Z_?EC)*#_C3(3G+Ccv-tX-&Zxr|4n3z6HSg^XBt= z!m~~SzkQND2&V*1qbNM|wzf;>_XJq=M~9!3E7B_R1ekIhoGprXb{BDW69<1i0p1tY zIBzK<@Z*VvXA}UZ+`vt1muP2jc9`Brc*(kZ8)l7Tmm~3`=T~6)JP;}&?S~%+Cn*9B z%>!wkc(oZ_)nGiT%H(4Y(4INSA+RREaz~kzZV$+=9eZZTu*}fwj5X-9)x<)e@YU&u zBS1Tl`YF|@g5a@@<}rQ%=0tCrx(D&NI%PQ8-G&AswL`Gl!|@H^^KA1#gv_eGUq7ke z=Lk+P7vAGN!2row-E-5!d+5V0<<)606;D?V6D;PwR#Rq`Mf7Cg{xU68ad!?s+alz# z=T=!vPl*L<|0Vs(Dyd2n#y&H>2}?0Ylvj0%2Js}HOlybkH!~#>%zZI>6SiW{D6hhl zB*MvK5au=Z|3~yuryzuW7Xag505SIZmjvQ5A(Bzm zz}P&dVq1)TLHaz-VxmZ|_LO|iViwH(bD2ek;sK0(Et!DG6dLAYbnN{wnO0Cr66vIt z%wocR8ANExv*Ph0lfu5;4D)7)4GO>+1#lMwNhgnGVB++Ti79XuB_Mb4Qsh;c49t=~ z_^lF{r5Hjw>59285_xqf6Ht>9qN^l=y-yZ-?|)}F#N2mlwp*`nXZt#}f(qS#cma$5XT^cDR{6zsu#ma1`aDX{#s%7N5K`5xY$GUh4DI52~v7yS^x= z&=R2nL0I`k(qcZDX4{73c4Ku9!J*Uv$;#&T9``RNp_P?w6VFe*CRmk zBXb0H`~WqGs)CZ!aszpFeC-BW+{Pwv*Zh7IF8iFkeh6bt?@~A_^YUnMSu}^33J7VZ zK;y?E`sA%W$D^vY3`K^r1{7Wd32rKTkk>!W^eY2!10b>+NXNhM|KD(f6A+I_f!{m( zF9k;ewm>`<_UW@KVlLz@;^ zDi>My&Bs9| zbe_t%=s3ZBCC0tDbFX$JJ(6(RN=fLw=Fk>_0f}YRK#}JH}HX}kAO?eJ$<)&B^lOigBQ*;+d+Q`7 zA^UN11?6D-cih{lT%KWZ&qd%hY_=W)*D=_LvV*?p=+qm*FvZuR`!!_ zc(sGO_$AlSU3*Ol;>SFE2+3!cUK;L zCx5}VdLC$u7jK(-B7p}Ry%x+vqMrtS*unTi+EyIK;@A4HtB~F9LLv{wL6u_qa-s|7 zHJpmXKmRJDiKNPf<&?&h{@?z;cIX@kO?DBO+Y&A_@Ea%C=I7W|&yCN$vrxIGv%T(Z zrJq**W&R;DwOow}kPB#wIj`Y_#%(seSdP;gPkQWqDz=qXr2^|OVi(q5osRjM^SrF< zA@{@&v2{0}Ms;|^4)^ftBGluD{Hy6AtR8-YVTKOf#eRuEbME$rG zXO%WzCLwL%WLAIc%;&N(^X>Jr3&E@sfOSX(RRsXlq0Bp`Yg)_~R?uRH!kBz>%2rGE zju{{IZSvR8UgS)6n4tFv*D;qGKgDQ>aO&<^^x>GO>ph$H|=TDk1U)yxaX1OsyfW(Qev{@s)8{cCGF8yqB7b1DkWCy!Irw}OM1GN zQ=4f{?-;9779~@WBDcP(>cusdjUhhSEE?Zz8(`8$boKPyrdFpIv48Vv99HoMe9&@{ z*?$SZ2fe~S;e*wb@N%OZ#${)>WhS~n>QO*-%bp-0C|c|nE@pQvZ?*Kj4+yFS->WNp z$7zc_VO2fuQ`G;e;!dV*exob3_`9^>+}U`S1pQ|=x1Dx4z~CZbBzpR>ZK-JDi4SK# zBwXQ4yZhnCLh&vlGqRI^%rN~*S?Rj+%~oYP$BD*bpRoSfP2cXQQ>x(sWIO+zepxe<9tlS%w>#WF@dInm=$yWkae1zH_u5Z6&x+SLbU(adWJe3nnol1!Xl#EZw9HG3Hkz`p zAvwVEhavK^vfkSf#rKL&6&E=-1?b&rTtJ~_Ju?n4Td92nYwlNKRFjTktqvoE*KF0) zYo}r>WAinv<92<~JHkW(FS#jZGzGc{CL47(iHrP^_7vS46f&iCk+J(Q~fRR;+NXAT}>qhYp@i?rKgiVSrO8 z3Zq!oaskfasVAU;KQWcTz(b^4V?;xQr8LG6EP|ovX;xsJ<7=AefY>w!FT7B)b^`^l zSG25ebn%Q+G-#4W187Ycy%Za&Dd1u6e+8;aj4ct8(pKdLaEDW@pUAe*eI0y$Y!OBl zPd9ZLjXWu>gTDw62v1f|?Yqk{7|@y+`rOHLqIHR_)9~T=53F8irm|VFF}sH7u2_U9 zvrq`NSEqk8R$GzEhC6!auOLdHQCX7+~UR4LcE&|IHBw`^=XFi9P=ri6yRlj6Ve z;)mah;-}N2F=;E2>-3aoXW4}=O9(ggzHGZpqFKl4sbL^g6E91fE)C}H-!=v*JRTf! z=*{kwA`3joi6E$Cb6 z{rOc%xbDQ3fKOx3p_}j&d^`^VCY@nAMHaRDVg8V*{V@07GRsPCnLfqO7w}5t32E5% zgI@|u`HC5nX9s*bx2jFt8)M^$DtN)$a^#o2yNDeM2lLn)fmB-u3i|@rNwco|a0t91 ziR?3)oJj=W)gEbR;Y48{#%fORqM$!~gIfEocD z#2fPhbvxkk3eLF4%MTD0t39Rp_P`UMokG+nU*!jJ?2N~jY~Ze0gtLBMy_*aa58 zfsJ`=0Wjl_1b~Dp#g-QtNT@Jv)sxok)CDY|Rl33C-33)@6ZFXd;v*AT5fI^c=K(7+ znOM^tumJXcXW`M|Kwz7SXr~F}gf~{kAYgA-cI1GOK&+6y^ym;60WA<}9KBBoEU`cI z2xON4@dDwp$wWez9Y-FAJvf0ZA9g}#5QXa9WZ{r=Ik*bo2JkrE@Ex*j2xb36HejD6 z?-KxQ5#lO-$TosZ&)}4ow+Wy2q!o88Yg4-f=2dY_weI7z`e1D=%5fKkW7AP z)y$UgQ902{_`KI64Qw^s4{Y!N%6`x1?PpO1C4B%i_-E3jyRE7)p==`f6?Um_N&d!VS!mAXZ{_PCx5JISD1tzwibyhxgJiHSM@kC^=~Qj7qN0zLgMQX~9dGet zMa8UA1tdqUibm!O;Tb2zA{|+iwUsC)gV(DlCq=z`E)se?;X2iQP7-%4X$_jcG4tD0 zYa!}-Va(AZSb3W&^k7yHmr`K3@-A&Zo1}uSfx%cd)PjoVCfnLt7PcH z)n1OCqZ#UT<$AGDsmy?wl3awzZMn)>)*N)3=|9uTF*-k+T7#|F>$jnxY{Z$wggjNsONr$lRBd|q-DAU)7&!E z%#8}4d`=&2b($w6&h9~&UCAsk-5HYtPI_<#7o?DVdqzq+FN=eyHJH>g^B~q?*VOLw_%wY>en?LDttEw5YzLhU_N;GD;U_-zzV zYE*|IbAIIwefQnP+SQT%78fIyd^ORa?Q6Mnr*SjCYUT7x3iM&)ulfg0=hmHFkiV#3 z@?Kx13-A<&Tw*J^{GVvzP*wb^r})h!6jJ~l0icQBs^XuXqUNvivc(veZ^!+^vrbsJ`cKixT>0D#8=r^4f8scgH*(}G zuHP%}7)tCN)wb{ypTw%RG|s!)T0OMw+O%yS_Q(#xr5K%Bf32>p|mk7&HpK6EX(LO5DE3Iio#d`M4tij+h{Jg8PzLhVW-+7ei+R>Sa8wzj?n> zCU#z0riBLiPb>D@S`T)h4vLG5s6c_pxk+~EtsT5smcsT(coAfA*JlAI6NGWW z7Uz?29|AC4iuZ^=qxd|0@zbRHd)a}`NmABZj=Cd>er;9Y;X#$HWCYGLV6rv;ez4Tp zbz&w0yGGg~&KuowTDEzsByzvwD|#w0AwR1I)}Br1MnlJ{3wBjV&qSF87YJqxqDZ3P zt=$c{U-4%_OOC*Oc#qWBrMs7BGt_&!ltV|`{U&k`CgOgbRVPfewK6b^vq*M8Y*Id8 zi2bOU_NOhc7y#E<2Q|5XuCB{KSC`1&)+s%(cl5A#aguWP@w}gw+GPkdl44eZPn6Rd{;0K~uT0_c zJy}s3LutBGNBLF1_^UCd4u8^26XXnX#(LbFFA_I1P`>Ov2ifQdm92y7MkZ31+XZR1 zfvFVeJlaZxZ%14d(_wYqWXM(M6S!7vGIF!tiOWL>Tf>+reDf)F$MW+T%(}Bi8Be@$ zzWV#{aj^@5R}GOOyph-tPWAT98ok~0n9|CWR*ewo^@-5CJZ!QtriLBdZHHZaT zz@ZD9Ifh?;fdg_3U6Bp=i@D$EbB}+zNSOtZJ$6Un)}m5McYKnFjFzEcY}J>M_{B?Z zORty%LLQpa?Zojptl3t`^u0UJ!{4hPFQT6*PJdl1aer`8_G^J*h;Z+5{0=!NncUE`RAB!zg9#px0-3|ht*9hcWJ+@y_uPCdhP0hY1UVX1sIN7K6MMP za5wK&HwzZ7uToKNPZ>mNSYD_7or z4W^-8U_Usk>6iogO!zMDL>3H8ot&@S6<8loh5tPQMCq z4I64Vu;lD+cmko$OfHdpRnH~7a?O1i$2{Gw(+4xZ)CcxHwxi86UyuLCj@}y(=XD`T z%I{C&!(1+Kp}bB>v@kS>${P#6Tw*E^zq)*6ZXlp_1|t75=~0^>{r#_G%`uJn!3mgg*QF~$w%7z=WJuICsFPcmg{Wzzl- z?l?opy(?vecukZXn)qVF3Tv%ADIf#E{LDM)S>~lt#%MIsnb%Zohv)Z3=o?VSt13+_I&1^VOvn?XJQ?$YjU5w~cd=thEJa@Gw&TO!Uwf)bF*LXjh@*$t zxMNgr`ZE6qp2X^s-7}vijbZ; z^SoyQawgkx6D>K8W(Q@PO&ebB%GeRx^YBrlG%L;wAzlwJ^EBKzE;`aYwtve#b3^1+x6tIP$w44Ltf?`8)7s*rM6r1^(+d l=h3{QXUV_vv@HHE?~ik)u>my=d2M>&S_qtHnQxOH{SO4f&b0sl diff --git a/Cargo.lock b/Cargo.lock index faa427bcc2e..686fe5043d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -895,7 +895,7 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "check-features" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "toml", ] @@ -1367,7 +1367,7 @@ dependencies = [ [[package]] name = "dapi-grpc" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "dapi-grpc-macros", "futures-core", @@ -1385,7 +1385,7 @@ dependencies = [ [[package]] name = "dapi-grpc-macros" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "dapi-grpc", "heck 0.5.0", @@ -1430,7 +1430,7 @@ dependencies = [ [[package]] name = "dash-context-provider" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "dpp", "drive", @@ -1464,7 +1464,7 @@ dependencies = [ [[package]] name = "dash-platform-balance-checker" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "anyhow", "clap", @@ -1480,7 +1480,7 @@ dependencies = [ [[package]] name = "dash-sdk" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "arc-swap", "assert_matches", @@ -1746,7 +1746,7 @@ dependencies = [ [[package]] name = "dashpay-contract" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "platform-value", "platform-version", @@ -1756,7 +1756,7 @@ dependencies = [ [[package]] name = "data-contracts" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "dashpay-contract", "dpns-contract", @@ -1903,7 +1903,7 @@ checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "dpns-contract" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "platform-value", "platform-version", @@ -1913,7 +1913,7 @@ dependencies = [ [[package]] name = "dpp" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "anyhow", "assert_matches", @@ -1969,7 +1969,7 @@ dependencies = [ [[package]] name = "drive" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "arc-swap", "assert_matches", @@ -2010,7 +2010,7 @@ dependencies = [ [[package]] name = "drive-abci" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "arc-swap", "assert_matches", @@ -2067,7 +2067,7 @@ dependencies = [ [[package]] name = "drive-proof-verifier" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "bincode 2.0.0-rc.3", "dapi-grpc", @@ -2321,7 +2321,7 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "feature-flags-contract" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "platform-value", "platform-version", @@ -3498,7 +3498,7 @@ dependencies = [ [[package]] name = "json-schema-compatibility-validator" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "assert_matches", "json-patch", @@ -3656,7 +3656,7 @@ dependencies = [ [[package]] name = "keyword-search-contract" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "base58", "platform-value", @@ -3808,7 +3808,7 @@ dependencies = [ [[package]] name = "masternode-reward-shares-contract" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "platform-value", "platform-version", @@ -4520,7 +4520,7 @@ checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "platform-serialization" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "bincode 2.0.0-rc.3", "platform-version", @@ -4528,7 +4528,7 @@ dependencies = [ [[package]] name = "platform-serialization-derive" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "proc-macro2", "quote", @@ -4538,7 +4538,7 @@ dependencies = [ [[package]] name = "platform-value" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "base64 0.22.1", "bincode 2.0.0-rc.3", @@ -4557,7 +4557,7 @@ dependencies = [ [[package]] name = "platform-value-convertible" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "quote", "syn 2.0.106", @@ -4565,7 +4565,7 @@ dependencies = [ [[package]] name = "platform-version" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "bincode 2.0.0-rc.3", "grovedb-version", @@ -4576,7 +4576,7 @@ dependencies = [ [[package]] name = "platform-versioning" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "proc-macro2", "quote", @@ -4585,7 +4585,7 @@ dependencies = [ [[package]] name = "platform-wallet" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "dashcore 0.40.0 (git+https://github.com/dashpay/rust-dashcore?tag=v0.40.0)", "dpp", @@ -5365,7 +5365,7 @@ dependencies = [ [[package]] name = "rs-dapi" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "async-trait", "axum 0.8.4", @@ -5414,7 +5414,7 @@ dependencies = [ [[package]] name = "rs-dapi-client" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "backon", "chrono", @@ -5441,7 +5441,7 @@ dependencies = [ [[package]] name = "rs-dash-event-bus" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "metrics", "tokio", @@ -5450,7 +5450,7 @@ dependencies = [ [[package]] name = "rs-sdk-ffi" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "bincode 2.0.0-rc.3", "bs58", @@ -5479,7 +5479,7 @@ dependencies = [ [[package]] name = "rs-sdk-trusted-context-provider" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "arc-swap", "async-trait", @@ -6170,7 +6170,7 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "simple-signer" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "base64 0.22.1", "bincode 2.0.0-rc.3", @@ -6267,7 +6267,7 @@ dependencies = [ [[package]] name = "strategy-tests" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "bincode 2.0.0-rc.3", "dpp", @@ -6664,7 +6664,7 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "token-history-contract" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "platform-value", "platform-version", @@ -7372,7 +7372,7 @@ dependencies = [ [[package]] name = "wallet-utils-contract" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "platform-value", "platform-version", @@ -7511,7 +7511,7 @@ dependencies = [ [[package]] name = "wasm-dpp" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "anyhow", "async-trait", @@ -7535,7 +7535,7 @@ dependencies = [ [[package]] name = "wasm-drive-verify" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "base64 0.22.1", "bincode 2.0.0-rc.3", @@ -7570,7 +7570,7 @@ dependencies = [ [[package]] name = "wasm-sdk" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "base64 0.22.1", "bip39", @@ -8134,7 +8134,7 @@ checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" [[package]] name = "withdrawals-contract" -version = "2.1.2" +version = "2.2.0-dev.1" dependencies = [ "num_enum 0.5.11", "platform-value", diff --git a/Cargo.toml b/Cargo.toml index b567fa36245..e820bd61810 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,5 +44,5 @@ members = [ [workspace.package] -version = "2.1.2" +version = "2.2.0-dev.1" rust-version = "1.89" diff --git a/package.json b/package.json index 496129fb392..1335d96eed9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/platform", - "version": "2.1.2", + "version": "2.2.0-dev.1", "private": true, "scripts": { "setup": "yarn install && yarn run build && yarn run configure", diff --git a/packages/bench-suite/package.json b/packages/bench-suite/package.json index f485fb990a0..5f7a07893fc 100644 --- a/packages/bench-suite/package.json +++ b/packages/bench-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/bench-suite", "private": true, - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "Dash Platform benchmark tool", "scripts": { "bench": "node ./bin/bench.js", diff --git a/packages/dapi-grpc/package.json b/packages/dapi-grpc/package.json index c6c2a5fc894..06fb0cd4812 100644 --- a/packages/dapi-grpc/package.json +++ b/packages/dapi-grpc/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-grpc", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "DAPI GRPC definition file and generated clients", "browser": "browser.js", "main": "node.js", diff --git a/packages/dapi/package.json b/packages/dapi/package.json index 358be8f0f43..417f0a6f67d 100644 --- a/packages/dapi/package.json +++ b/packages/dapi/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/dapi", "private": true, - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "A decentralized API for the Dash network", "scripts": { "api": "node scripts/api.js", diff --git a/packages/dash-spv/package.json b/packages/dash-spv/package.json index 218a3310833..3fe29dfdbdc 100644 --- a/packages/dash-spv/package.json +++ b/packages/dash-spv/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dash-spv", - "version": "3.1.2", + "version": "3.2.0-dev.1", "description": "Repository containing SPV functions used by @dashevo", "main": "index.js", "scripts": { diff --git a/packages/dashmate/package.json b/packages/dashmate/package.json index 5a763051ee4..f29fd6b6a98 100644 --- a/packages/dashmate/package.json +++ b/packages/dashmate/package.json @@ -1,6 +1,6 @@ { "name": "dashmate", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "Distribution package for Dash node installation", "scripts": { "lint": "eslint .", diff --git a/packages/dashpay-contract/package.json b/packages/dashpay-contract/package.json index d0c354c1b2f..11a8e7528d3 100644 --- a/packages/dashpay-contract/package.json +++ b/packages/dashpay-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dashpay-contract", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "Reference contract of the DashPay DPA on Dash Evolution", "scripts": { "lint": "eslint .", diff --git a/packages/dpns-contract/package.json b/packages/dpns-contract/package.json index 0cba3a54701..973ccb3ecbd 100644 --- a/packages/dpns-contract/package.json +++ b/packages/dpns-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dpns-contract", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "A contract and helper scripts for DPNS DApp", "scripts": { "lint": "eslint .", diff --git a/packages/feature-flags-contract/package.json b/packages/feature-flags-contract/package.json index 894d215eb51..283b008ae08 100644 --- a/packages/feature-flags-contract/package.json +++ b/packages/feature-flags-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/feature-flags-contract", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "Data Contract to store Dash Platform feature flags", "scripts": { "build": "", diff --git a/packages/js-dapi-client/package.json b/packages/js-dapi-client/package.json index a919584bcad..3d4ec888dc9 100644 --- a/packages/js-dapi-client/package.json +++ b/packages/js-dapi-client/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/dapi-client", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "Client library used to access Dash DAPI endpoints", "main": "lib/index.js", "contributors": [ diff --git a/packages/js-dash-sdk/package.json b/packages/js-dash-sdk/package.json index 5838da728d8..9ce26d17242 100644 --- a/packages/js-dash-sdk/package.json +++ b/packages/js-dash-sdk/package.json @@ -1,6 +1,6 @@ { "name": "dash", - "version": "5.1.2", + "version": "5.2.0-dev.1", "description": "Dash library for JavaScript/TypeScript ecosystem (Wallet, DAPI, Primitives, BLS, ...)", "main": "build/index.js", "unpkg": "dist/dash.min.js", diff --git a/packages/js-evo-sdk/package.json b/packages/js-evo-sdk/package.json index cb1813defee..3d267699957 100644 --- a/packages/js-evo-sdk/package.json +++ b/packages/js-evo-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/evo-sdk", - "version": "2.1.2", + "version": "2.2.0-dev.1", "type": "module", "main": "./dist/evo-sdk.module.js", "types": "./dist/sdk.d.ts", diff --git a/packages/js-grpc-common/package.json b/packages/js-grpc-common/package.json index 62b17da0d00..aa1016f7954 100644 --- a/packages/js-grpc-common/package.json +++ b/packages/js-grpc-common/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/grpc-common", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "Common GRPC library", "main": "index.js", "scripts": { diff --git a/packages/keyword-search-contract/package.json b/packages/keyword-search-contract/package.json index 6d5f6e6d044..b77746e2719 100644 --- a/packages/keyword-search-contract/package.json +++ b/packages/keyword-search-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/keyword-search-contract", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "A contract that allows searching for contracts", "scripts": { "lint": "eslint .", diff --git a/packages/masternode-reward-shares-contract/package.json b/packages/masternode-reward-shares-contract/package.json index 559e5f87fc9..4f3cae29eef 100644 --- a/packages/masternode-reward-shares-contract/package.json +++ b/packages/masternode-reward-shares-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/masternode-reward-shares-contract", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "A contract and helper scripts for reward sharing", "scripts": { "lint": "eslint .", diff --git a/packages/platform-test-suite/package.json b/packages/platform-test-suite/package.json index c55aafdbbc1..f2f2dc5459c 100644 --- a/packages/platform-test-suite/package.json +++ b/packages/platform-test-suite/package.json @@ -1,7 +1,7 @@ { "name": "@dashevo/platform-test-suite", "private": true, - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "Dash Network end-to-end tests", "scripts": { "test": "yarn exec bin/test.sh", diff --git a/packages/token-history-contract/package.json b/packages/token-history-contract/package.json index e0de64d6c14..4c773408880 100644 --- a/packages/token-history-contract/package.json +++ b/packages/token-history-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/token-history-contract", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "The token history contract", "scripts": { "lint": "eslint .", diff --git a/packages/wallet-lib/package.json b/packages/wallet-lib/package.json index 1d51d6efd8f..7aa8cd8797e 100644 --- a/packages/wallet-lib/package.json +++ b/packages/wallet-lib/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wallet-lib", - "version": "9.1.2", + "version": "9.2.0-dev.1", "description": "Light wallet library for Dash", "main": "src/index.js", "unpkg": "dist/wallet-lib.min.js", diff --git a/packages/wallet-utils-contract/package.json b/packages/wallet-utils-contract/package.json index 70b935882d0..f35494cf317 100644 --- a/packages/wallet-utils-contract/package.json +++ b/packages/wallet-utils-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wallet-utils-contract", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "A contract and helper scripts for Wallet DApp", "scripts": { "lint": "eslint .", diff --git a/packages/wasm-dpp/package.json b/packages/wasm-dpp/package.json index 9d9ccba5d11..bc12a2eb91e 100644 --- a/packages/wasm-dpp/package.json +++ b/packages/wasm-dpp/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wasm-dpp", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "The JavaScript implementation of the Dash Platform Protocol", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/wasm-drive-verify/package.json b/packages/wasm-drive-verify/package.json index 4cebbcb255c..95bd4c48eaf 100644 --- a/packages/wasm-drive-verify/package.json +++ b/packages/wasm-drive-verify/package.json @@ -3,7 +3,7 @@ "collaborators": [ "Dash Core Group " ], - "version": "2.1.2", + "version": "2.2.0-dev.1", "license": "MIT", "description": "WASM bindings for Drive verify functions", "repository": { diff --git a/packages/wasm-sdk/package.json b/packages/wasm-sdk/package.json index 8c3bd9d33bc..240c98a60ab 100644 --- a/packages/wasm-sdk/package.json +++ b/packages/wasm-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/wasm-sdk", - "version": "2.1.2", + "version": "2.2.0-dev.1", "type": "module", "main": "./dist/sdk.js", "types": "./dist/sdk.d.ts", diff --git a/packages/withdrawals-contract/package.json b/packages/withdrawals-contract/package.json index 40b2ca89765..06541a8bc65 100644 --- a/packages/withdrawals-contract/package.json +++ b/packages/withdrawals-contract/package.json @@ -1,6 +1,6 @@ { "name": "@dashevo/withdrawals-contract", - "version": "2.1.2", + "version": "2.2.0-dev.1", "description": "Data Contract to manipulate and track withdrawals", "scripts": { "build": "", From ee86a19ee14853869083934d5b2c69e861bcb66e Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Fri, 31 Oct 2025 10:17:04 +0100 Subject: [PATCH 23/40] feat(dapi): configurable timeouts --- .../configs/defaults/getBaseConfigFactory.js | 7 ++- .../configs/getConfigFileMigrationsFactory.js | 34 ++++++++++++ packages/dashmate/docker-compose.yml | 6 ++- packages/dashmate/docs/config/dapi.md | 6 ++- packages/dashmate/docs/config/gateway.md | 3 +- packages/dashmate/docs/services/gateway.md | 12 ++--- .../dashmate/src/config/configJsonSchema.js | 40 ++++++++++---- .../templates/platform/gateway/envoy.yaml.dot | 54 ++++++++++++------- packages/rs-dapi/README.md | 2 + packages/rs-dapi/src/config/mod.rs | 14 +++++ packages/rs-dapi/src/config/tests.rs | 8 +++ .../subscribe_platform_events.rs | 20 ++++++- .../streaming_service/block_header_stream.rs | 7 +++ .../masternode_list_stream.rs | 4 ++ .../src/services/streaming_service/mod.rs | 22 +++++++- .../streaming_service/transaction_stream.rs | 2 + 16 files changed, 195 insertions(+), 46 deletions(-) diff --git a/packages/dashmate/configs/defaults/getBaseConfigFactory.js b/packages/dashmate/configs/defaults/getBaseConfigFactory.js index a385e8b31f0..f059a11c0f8 100644 --- a/packages/dashmate/configs/defaults/getBaseConfigFactory.js +++ b/packages/dashmate/configs/defaults/getBaseConfigFactory.js @@ -185,7 +185,6 @@ export default function getBaseConfigFactory() { http2: { maxConcurrentStreams: 10, }, - waitForStResultTimeout: '125s', host: '0.0.0.0', port: 443, }, @@ -249,7 +248,6 @@ export default function getBaseConfigFactory() { target: 'dapi', }, }, - waitForStResultTimeout: 120000, }, rsDapi: { docker: { @@ -264,6 +262,11 @@ export default function getBaseConfigFactory() { target: 'rs-dapi', }, }, + timeouts: { + waitForStateTransitionResult: 120000, + subscribePlatformEvents: 600000, + coreStreams: 600000, + }, metrics: { enabled: false, host: '127.0.0.1', diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index 735eacb86a4..e7dc1e35ed2 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -1283,6 +1283,40 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) ) { options.core.zmq.port = targetZmqPort; } + + if (!options.platform?.dapi) { + return; + } + + if (!options.platform.dapi.rsDapi) { + options.platform.dapi.rsDapi = {}; + } + + const existingTimeouts = options.platform.dapi.rsDapi.timeouts + ?? options.platform.dapi.api?.timeouts; + const waitForStateTransitionResult = existingTimeouts?.waitForStateTransitionResult + ?? options.platform?.dapi?.api?.waitForStResultTimeout + ?? 120000; + const subscribePlatformEvents = existingTimeouts?.subscribePlatformEvents ?? 600000; + const coreStreams = existingTimeouts?.coreStreams ?? 600000; + + options.platform.dapi.rsDapi.timeouts = { + waitForStateTransitionResult, + subscribePlatformEvents, + coreStreams, + }; + + if (options.platform?.dapi?.api?.timeouts) { + delete options.platform.dapi.api.timeouts; + } + + if (typeof options.platform?.dapi?.api?.waitForStResultTimeout !== 'undefined') { + delete options.platform.dapi.api.waitForStResultTimeout; + } + + if (options.platform?.gateway?.listeners?.dapiAndDrive) { + delete options.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout; + } }); return configFile; diff --git a/packages/dashmate/docker-compose.yml b/packages/dashmate/docker-compose.yml index 5ca9175d830..913a2ebb975 100644 --- a/packages/dashmate/docker-compose.yml +++ b/packages/dashmate/docker-compose.yml @@ -153,7 +153,7 @@ services: - NODE_ENV=${ENVIRONMENT:?err} - DRIVE_RPC_HOST=drive_abci - DRIVE_RPC_PORT=26670 - - WAIT_FOR_ST_RESULT_TIMEOUT=${PLATFORM_DAPI_API_WAIT_FOR_ST_RESULT_TIMEOUT:?err} + - WAIT_FOR_ST_RESULT_TIMEOUT=${PLATFORM_DAPI_RS_DAPI_TIMEOUTS_WAIT_FOR_STATE_TRANSITION_RESULT:?err} command: yarn run api stop_grace_period: 10s expose: @@ -217,7 +217,9 @@ services: - DAPI_CORE_RPC_URL=http://core:${CORE_RPC_PORT:?err} - DAPI_CORE_RPC_USER=dapi - DAPI_CORE_RPC_PASS=${CORE_RPC_USERS_DAPI_PASSWORD:?err} - - DAPI_STATE_TRANSITION_WAIT_TIMEOUT=${PLATFORM_DAPI_API_WAIT_FOR_ST_RESULT_TIMEOUT:?err} + - DAPI_STATE_TRANSITION_WAIT_TIMEOUT=${PLATFORM_DAPI_RS_DAPI_TIMEOUTS_WAIT_FOR_STATE_TRANSITION_RESULT:?err} + - DAPI_PLATFORM_EVENTS_TIMEOUT=${PLATFORM_DAPI_RS_DAPI_TIMEOUTS_SUBSCRIBE_PLATFORM_EVENTS:?err} + - DAPI_CORE_STREAM_TIMEOUT=${PLATFORM_DAPI_RS_DAPI_TIMEOUTS_CORE_STREAMS:?err} - DAPI_LOGGING_LEVEL=${PLATFORM_DAPI_RS_DAPI_LOGS_LEVEL:-info} - DAPI_LOGGING_JSON_FORMAT=${PLATFORM_DAPI_RS_DAPI_LOGS_JSON_FORMAT:-false} - DAPI_LOGGING_ACCESS_LOG_PATH=${PLATFORM_DAPI_RS_DAPI_LOGS_ACCESS_LOG_PATH:-} diff --git a/packages/dashmate/docs/config/dapi.md b/packages/dashmate/docs/config/dapi.md index 7c6a7d90fd4..8a24273a2f5 100644 --- a/packages/dashmate/docs/config/dapi.md +++ b/packages/dashmate/docs/config/dapi.md @@ -31,9 +31,11 @@ These settings allow you to build the DAPI API Docker image from source. If `ena | Option | Description | Default | Example | |--------|-------------|---------|---------| -| `platform.dapi.api.waitForStResultTimeout` | Timeout for state transitions (ms) | `120000` | `240000` | +| `platform.dapi.rsDapi.timeouts.waitForStateTransitionResult` | Timeout for waiting on state transition results before rs-dapi aborts (milliseconds) | `120000` | `240000` | +| `platform.dapi.rsDapi.timeouts.subscribePlatformEvents` | Timeout for platform event subscriptions before rs-dapi closes the stream (milliseconds) | `600000` | `300000` | +| `platform.dapi.rsDapi.timeouts.coreStreams` | Timeout for Core streaming subscriptions (block headers, masternodes, transactions) before rs-dapi closes the stream (milliseconds) | `600000` | `300000` | -This timeout setting controls how long DAPI will wait for state transition results before returning a timeout error to the client. It is specified in milliseconds. +All timeout values are expressed in milliseconds. Dashmate automatically configures Envoy to allow an additional five-second grace period so that rs-dapi can terminate requests cleanly before the proxy times out. ## rs-dapi (Rust) diff --git a/packages/dashmate/docs/config/gateway.md b/packages/dashmate/docs/config/gateway.md index ef782969ed9..d7fec7bb92f 100644 --- a/packages/dashmate/docs/config/gateway.md +++ b/packages/dashmate/docs/config/gateway.md @@ -17,12 +17,13 @@ The listener configuration controls the API endpoints exposed by the Gateway: | `platform.gateway.listeners.dapiAndDrive.port` | Gateway API port | `443` | `8443` | | `platform.gateway.listeners.dapiAndDrive.host` | Gateway API host binding | `0.0.0.0` | `127.0.0.1` | | `platform.gateway.listeners.dapiAndDrive.http2.maxConcurrentStreams` | Max concurrent HTTP/2 streams per connection | `10` | `100` | -| `platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout` | Timeout for state transition results | `125s` | `300s` | Host binding notes: - Setting `0.0.0.0` allows connections from any IP address - Setting `127.0.0.1` restricts connections to localhost only +Timeouts for long-running routes are configured via `platform.dapi.rsDapi.timeouts.*` and automatically include a five-second grace period in Envoy. + ## Performance These settings control resource allocation and limits for the Gateway: diff --git a/packages/dashmate/docs/services/gateway.md b/packages/dashmate/docs/services/gateway.md index 499c18cc492..4d4d65278ce 100644 --- a/packages/dashmate/docs/services/gateway.md +++ b/packages/dashmate/docs/services/gateway.md @@ -71,7 +71,8 @@ The Gateway routes requests to different backend services based on URL path: - Core streaming endpoints (`/org.dash.platform.dapi.v0.Core/subscribeTo*`): routed to `dapi_core_streams` - Other Core endpoints (`/org.dash.platform.dapi.v0.Core*`): routed to `dapi_api` -- Platform waitForStateTransitionResult (`/org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult`): routed to `dapi_api` with extended timeout +- Platform waitForStateTransitionResult (`/org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult`): routed to `dapi_api` with an extended timeout +- Platform SubscribePlatformEvents (`/org.dash.platform.dapi.v0.Platform/SubscribePlatformEvents`): routed to `rs_dapi` with an extended timeout - Platform endpoints (`/org.dash.platform.dapi.v0.Platform*`): routed to `drive_grpc` - JSON-RPC endpoints (`/`): routed to `dapi_json_rpc` @@ -103,13 +104,12 @@ http2_protocol_options: ### Timeouts -Different endpoints have different timeout requirements: +Dashmate exposes per-endpoint timeout controls that are shared between rs-dapi and Envoy. Envoy is configured automatically with an additional five-second grace period so that rs-dapi can return structured errors before the proxy aborts a request. - Standard API endpoints: 10-15 seconds (fixed in Envoy configuration) -- Core streaming endpoints: 600 seconds (10 minutes) (fixed in Envoy configuration) -- waitForStateTransitionResult endpoint: 125 seconds (default) - -**Config option**: `platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout` + - Core streaming endpoints: derived from `platform.dapi.rsDapi.timeouts.coreStreams` (default 600 000 ms) + - waitForStateTransitionResult endpoint: derived from `platform.dapi.rsDapi.timeouts.waitForStateTransitionResult` (default 120 000 ms) + - SubscribePlatformEvents endpoint: derived from `platform.dapi.rsDapi.timeouts.subscribePlatformEvents` (default 600 000 ms) ### Circuit Breaking diff --git a/packages/dashmate/src/config/configJsonSchema.js b/packages/dashmate/src/config/configJsonSchema.js index 8c391cb9525..4a688710d7c 100644 --- a/packages/dashmate/src/config/configJsonSchema.js +++ b/packages/dashmate/src/config/configJsonSchema.js @@ -564,9 +564,6 @@ export default { additionalProperties: false, required: ['maxConcurrentStreams'], }, - waitForStResultTimeout: { - $ref: '#/definitions/durationInSeconds', - }, host: { type: 'string', minLength: 1, @@ -576,7 +573,7 @@ export default { $ref: '#/definitions/port', }, }, - required: ['http2', 'host', 'port', 'waitForStResultTimeout'], + required: ['http2', 'host', 'port'], additionalProperties: false, }, }, @@ -842,13 +839,8 @@ export default { required: ['image', 'build', 'deploy'], additionalProperties: false, }, - waitForStResultTimeout: { - type: 'integer', - minimum: 1, - description: 'How many millis to wait for state transition result before timeout', - }, }, - required: ['docker', 'waitForStResultTimeout'], + required: ['docker'], additionalProperties: false, }, rsDapi: { @@ -879,6 +871,32 @@ export default { required: ['image', 'build', 'deploy'], additionalProperties: false, }, + timeouts: { + type: 'object', + properties: { + waitForStateTransitionResult: { + type: 'integer', + minimum: 1, + description: 'How many millis to wait for state transition result before timeout', + }, + subscribePlatformEvents: { + type: 'integer', + minimum: 1, + description: 'How many millis to keep platform event subscriptions open before timeout', + }, + coreStreams: { + type: 'integer', + minimum: 1, + description: 'How many millis to keep core streaming subscriptions open before timeout', + }, + }, + required: [ + 'waitForStateTransitionResult', + 'subscribePlatformEvents', + 'coreStreams', + ], + additionalProperties: false, + }, metrics: { $ref: '#/definitions/enabledHostPort', }, @@ -909,7 +927,7 @@ export default { additionalProperties: false, }, }, - required: ['docker', 'metrics', 'logs'], + required: ['docker', 'timeouts', 'metrics', 'logs'], additionalProperties: false, }, }, diff --git a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot index f09aa21f6b0..f1cbf2aa6b0 100644 --- a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot +++ b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot @@ -1,4 +1,18 @@ {{ useDeprecated = it.platform.dapi.deprecated && it.platform.dapi.deprecated.enabled; }} +{{ const msToEnvoySeconds = (ms) => `${Math.ceil(ms / 1000)}s`; }} +{{ const addGraceBuffer = (ms) => ms + 5000; }} +{{ const rsDapiTimeouts = (it.platform.dapi.rsDapi && it.platform.dapi.rsDapi.timeouts) + || { + waitForStateTransitionResult: 120000, + subscribePlatformEvents: 600000, + coreStreams: 600000, + }; }} +{{ const waitForStateTransitionMs = rsDapiTimeouts.waitForStateTransitionResult; }} +{{ const waitForStateTransitionTimeout = msToEnvoySeconds(addGraceBuffer(waitForStateTransitionMs)); }} +{{ const subscribePlatformEventsMs = rsDapiTimeouts.subscribePlatformEvents; }} +{{ const subscribePlatformEventsTimeout = msToEnvoySeconds(addGraceBuffer(subscribePlatformEventsMs)); }} +{{ const coreStreamsMs = rsDapiTimeouts.coreStreams; }} +{{ const coreStreamsTimeout = msToEnvoySeconds(addGraceBuffer(coreStreamsMs)); }} !ignore filters: &filters - name: envoy.http_connection_manager typed_config: @@ -118,13 +132,13 @@ prefix: "/org.dash.platform.dapi.v0.Core/subscribeTo" route: cluster: dapi_core_streams - idle_timeout: 300s + idle_timeout: {{= coreStreamsTimeout }} # Upstream response timeout - timeout: 600s + timeout: {{= coreStreamsTimeout }} max_stream_duration: # Entire stream/request timeout - max_stream_duration: 600s - grpc_timeout_header_max: 600s + max_stream_duration: {{= coreStreamsTimeout }} + grpc_timeout_header_max: {{= coreStreamsTimeout }} # Other DAPI Core endpoints - match: prefix: "/org.dash.platform.dapi.v0.Core" @@ -137,13 +151,13 @@ path: "/org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult" route: cluster: dapi_api - idle_timeout: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} + idle_timeout: {{= waitForStateTransitionTimeout }} # Upstream response timeout - timeout: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} + timeout: {{= waitForStateTransitionTimeout }} max_stream_duration: # Entire stream/request timeout - max_stream_duration: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} - grpc_timeout_header_max: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} + max_stream_duration: {{= waitForStateTransitionTimeout }} + grpc_timeout_header_max: {{= waitForStateTransitionTimeout }} # DAPI getConsensusParams endpoint - match: path: "/org.dash.platform.dapi.v0.Platform/getConsensusParams" @@ -202,13 +216,13 @@ prefix: "/org.dash.platform.dapi.v0.Core/subscribeTo" route: cluster: rs_dapi - idle_timeout: 300s + idle_timeout: {{= coreStreamsTimeout }} # Upstream response timeout - timeout: 601s + timeout: {{= coreStreamsTimeout }} max_stream_duration: # Entire stream/request timeout - max_stream_duration: 601s - grpc_timeout_header_max: 600s + max_stream_duration: {{= coreStreamsTimeout }} + grpc_timeout_header_max: {{= coreStreamsTimeout }} # Core endpoints - match: prefix: "/org.dash.platform.dapi.v0.Core" @@ -221,25 +235,25 @@ path: "/org.dash.platform.dapi.v0.Platform/SubscribePlatformEvents" route: cluster: rs_dapi - idle_timeout: 305s + idle_timeout: {{= subscribePlatformEventsTimeout }} # Upstream response timeout - timeout: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} + timeout: {{= subscribePlatformEventsTimeout }} max_stream_duration: # Entire stream/request timeout - max_stream_duration: 605s - grpc_timeout_header_max: 300s + max_stream_duration: {{= subscribePlatformEventsTimeout }} + grpc_timeout_header_max: {{= subscribePlatformEventsTimeout }} # rs-dapi waitForStateTransitionResult endpoint with bigger timeout (now exposed directly) - match: path: "/org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult" route: cluster: rs_dapi - idle_timeout: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} + idle_timeout: {{= waitForStateTransitionTimeout }} # Upstream response timeout - timeout: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} + timeout: {{= waitForStateTransitionTimeout }} max_stream_duration: # Entire stream/request timeout - max_stream_duration: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} - grpc_timeout_header_max: {{= it.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout }} + max_stream_duration: {{= waitForStateTransitionTimeout }} + grpc_timeout_header_max: {{= waitForStateTransitionTimeout }} # rs-dapi Platform endpoints (now exposed directly) - match: prefix: "/org.dash.platform.dapi.v0.Platform" diff --git a/packages/rs-dapi/README.md b/packages/rs-dapi/README.md index 71e6a708bc6..a1ad09eb569 100644 --- a/packages/rs-dapi/README.md +++ b/packages/rs-dapi/README.md @@ -22,6 +22,8 @@ Service Configuration: DAPI_CORE_RPC_USER - Dash Core RPC username (default: empty) DAPI_CORE_RPC_PASS - Dash Core RPC password (default: empty) DAPI_STATE_TRANSITION_WAIT_TIMEOUT - Timeout in ms (default: 30000) + DAPI_PLATFORM_EVENTS_TIMEOUT - Platform events stream timeout in ms (default: 600000) + DAPI_CORE_STREAM_TIMEOUT - Core streaming timeout in ms (default: 600000) CONFIGURATION LOADING: 1. Command line environment variables (highest priority) diff --git a/packages/rs-dapi/src/config/mod.rs b/packages/rs-dapi/src/config/mod.rs index d9ba073338f..12b80c7598c 100644 --- a/packages/rs-dapi/src/config/mod.rs +++ b/packages/rs-dapi/src/config/mod.rs @@ -85,6 +85,18 @@ pub struct DapiConfig { deserialize_with = "from_str_or_number" )] pub state_transition_wait_timeout: u64, + /// Timeout for platform event subscriptions (in milliseconds) + #[serde( + rename = "dapi_platform_events_timeout", + deserialize_with = "from_str_or_number" + )] + pub platform_events_timeout: u64, + /// Timeout for core streaming subscriptions (in milliseconds) + #[serde( + rename = "dapi_core_stream_timeout", + deserialize_with = "from_str_or_number" + )] + pub core_stream_timeout: u64, /// Logging configuration #[serde(flatten)] pub logging: LoggingConfig, @@ -140,6 +152,8 @@ impl Default for DapiConfig { core: CoreConfig::default(), platform_cache_bytes: 2 * 1024 * 1024, state_transition_wait_timeout: 30000, // 30 seconds default + platform_events_timeout: 600000, // 10 minutes default + core_stream_timeout: 600000, // 10 minutes default logging: LoggingConfig::default(), } } diff --git a/packages/rs-dapi/src/config/tests.rs b/packages/rs-dapi/src/config/tests.rs index 62ebe034581..63d7f38f216 100644 --- a/packages/rs-dapi/src/config/tests.rs +++ b/packages/rs-dapi/src/config/tests.rs @@ -17,6 +17,8 @@ fn cleanup_env_vars() { "DAPI_TENDERDASH_WEBSOCKET_URI", "DAPI_CORE_ZMQ_URL", "DAPI_STATE_TRANSITION_WAIT_TIMEOUT", + "DAPI_PLATFORM_EVENTS_TIMEOUT", + "DAPI_CORE_STREAM_TIMEOUT", ]; for var in &env_vars { @@ -104,6 +106,8 @@ DAPI_TENDERDASH_URI=http://test-tenderdash:8000 DAPI_TENDERDASH_WEBSOCKET_URI=ws://test-tenderdash:8000/websocket DAPI_CORE_ZMQ_URL=tcp://test-core:30000 DAPI_STATE_TRANSITION_WAIT_TIMEOUT=45000 +DAPI_PLATFORM_EVENTS_TIMEOUT=510000 +DAPI_CORE_STREAM_TIMEOUT=610000 "#; fs::write(temp_file.path(), env_content).expect("Failed to write temp file"); @@ -125,6 +129,8 @@ DAPI_STATE_TRANSITION_WAIT_TIMEOUT=45000 ); assert_eq!(config.dapi.core.zmq_url, "tcp://test-core:30000"); assert_eq!(config.dapi.state_transition_wait_timeout, 45000); + assert_eq!(config.dapi.platform_events_timeout, 510000); + assert_eq!(config.dapi.core_stream_timeout, 610000); // Cleanup cleanup_env_vars(); @@ -157,6 +163,8 @@ DAPI_DRIVE_URI=http://partial-drive:8000 // Verify defaults are used for unspecified values assert_eq!(config.dapi.tenderdash.uri, "http://127.0.0.1:26657"); // default assert_eq!(config.dapi.state_transition_wait_timeout, 30000); // default + assert_eq!(config.dapi.platform_events_timeout, 600000); // default + assert_eq!(config.dapi.core_stream_timeout, 600000); // default // Cleanup cleanup_env_vars(); diff --git a/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs b/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs index d8fc10889c3..e07319bb9cd 100644 --- a/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs +++ b/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs @@ -4,6 +4,7 @@ use dapi_grpc::tonic::{Request, Response, Status}; use futures::StreamExt; use std::sync::Arc; use tokio::sync::mpsc; +use tokio::time::{Duration, sleep}; use tokio_stream::wrappers::ReceiverStream; use super::PlatformServiceImpl; @@ -32,11 +33,14 @@ impl PlatformServiceImpl { /// Forwards a subscription request upstream to Drive and streams responses back to the caller. pub async fn subscribe_platform_events_impl( &self, - request: Request, + mut request: Request, ) -> Result>>, Status> { let active_session = ActiveSessionGuard::new(); + let timeout_duration = Duration::from_millis(self.config.dapi.platform_events_timeout); + request.set_timeout(timeout_duration); + let mut client = self.drive_client.get_client(); let uplink_resp = client.subscribe_platform_events(request).await?; metrics::platform_events_upstream_stream_started(); @@ -47,6 +51,20 @@ impl PlatformServiceImpl { Result, >(PLATFORM_EVENTS_STREAM_BUFFER); + { + let timeout_tx = downlink_resp_tx.clone(); + self.workers.spawn(async move { + sleep(timeout_duration).await; + let status = + Status::deadline_exceeded("platform events subscription deadline exceeded"); + metrics::platform_events_forwarded_error(); + if timeout_tx.send(Err(status.clone())).await.is_ok() { + tracing::debug!("Platform events stream timeout elapsed"); + } + Ok::<(), DapiError>(()) + }); + } + // Spawn a task to forward uplink responses -> downlink { let session_handle = active_session; diff --git a/packages/rs-dapi/src/services/streaming_service/block_header_stream.rs b/packages/rs-dapi/src/services/streaming_service/block_header_stream.rs index ce8f7601ff9..03ba4553945 100644 --- a/packages/rs-dapi/src/services/streaming_service/block_header_stream.rs +++ b/packages/rs-dapi/src/services/streaming_service/block_header_stream.rs @@ -1,5 +1,6 @@ use std::collections::HashSet; use std::sync::Arc; +use std::time::Duration; use dapi_grpc::core::v0::block_headers_with_chain_locks_request::FromBlock; use dapi_grpc::core::v0::{ @@ -80,6 +81,9 @@ impl StreamingServiceImpl { ) -> Result { let (tx, rx) = mpsc::channel(BLOCK_HEADER_STREAM_BUFFER); + let timeout = Duration::from_millis(self.config.dapi.core_stream_timeout); + self.schedule_stream_timeout(tx.clone(), timeout, "block header stream deadline exceeded"); + self.send_initial_chainlock(tx.clone()).await?; self.spawn_fetch_historical_headers(from_block, Some(count as usize), None, tx, None, None) @@ -98,6 +102,9 @@ impl StreamingServiceImpl { let delivered_hashes: DeliveredHashSet = Arc::new(AsyncMutex::new(HashSet::new())); let (delivery_gate_tx, delivery_gate_rx) = watch::channel(false); + let timeout = Duration::from_millis(self.config.dapi.core_stream_timeout); + self.schedule_stream_timeout(tx.clone(), timeout, "block header stream deadline exceeded"); + let subscriber_id = self .start_live_stream( tx.clone(), diff --git a/packages/rs-dapi/src/services/streaming_service/masternode_list_stream.rs b/packages/rs-dapi/src/services/streaming_service/masternode_list_stream.rs index 4ed5d39bf25..cec46aaaa45 100644 --- a/packages/rs-dapi/src/services/streaming_service/masternode_list_stream.rs +++ b/packages/rs-dapi/src/services/streaming_service/masternode_list_stream.rs @@ -3,6 +3,7 @@ use dapi_grpc::tonic::{Request, Response, Status}; use tokio::sync::mpsc; use tokio_stream::wrappers::ReceiverStream; use tracing::debug; +use std::time::Duration; use crate::DapiError; use crate::services::streaming_service::{FilterType, StreamingEvent, StreamingServiceImpl}; @@ -20,6 +21,9 @@ impl StreamingServiceImpl { // Create channel for streaming responses let (tx, rx) = mpsc::channel(MASTERNODE_STREAM_BUFFER); + let timeout = Duration::from_millis(self.config.dapi.core_stream_timeout); + self.schedule_stream_timeout(tx.clone(), timeout, "masternode list stream deadline exceeded"); + // Add subscription to manager let subscription_handle = self.subscriber_manager.add_subscription(filter).await; diff --git a/packages/rs-dapi/src/services/streaming_service/mod.rs b/packages/rs-dapi/src/services/streaming_service/mod.rs index dac63b4e39e..40e099cf9e2 100644 --- a/packages/rs-dapi/src/services/streaming_service/mod.rs +++ b/packages/rs-dapi/src/services/streaming_service/mod.rs @@ -13,10 +13,11 @@ use crate::DapiError; use crate::clients::{CoreClient, TenderdashClient}; use crate::config::Config; use crate::sync::Workers; +use dapi_grpc::tonic::Status; use dash_spv::Hash; use std::sync::Arc; -use tokio::sync::broadcast; use tokio::sync::broadcast::error::RecvError; +use tokio::sync::{broadcast, mpsc}; use tokio::time::{Duration, sleep}; use tracing::{debug, trace}; @@ -131,6 +132,25 @@ impl StreamingServiceImpl { }) } + /// Schedule a timeout for a streaming response so clients receive a graceful deadline exceeded error. + fn schedule_stream_timeout( + &self, + tx: mpsc::Sender>, + duration: Duration, + context: &'static str, + ) where + T: Send + 'static, + { + self.workers.spawn(async move { + sleep(duration).await; + let status = Status::deadline_exceeded(context); + if tx.send(Err(status.clone())).await.is_ok() { + debug!(context = context, "stream timeout elapsed; closing channel"); + } + Ok::<(), DapiError>(()) + }); + } + /// Background worker: subscribe to Tenderdash transactions and forward to subscribers async fn tenderdash_transactions_subscription_worker( tenderdash_client: Arc, diff --git a/packages/rs-dapi/src/services/streaming_service/transaction_stream.rs b/packages/rs-dapi/src/services/streaming_service/transaction_stream.rs index 06ce6e24a83..c6c768ee6f7 100644 --- a/packages/rs-dapi/src/services/streaming_service/transaction_stream.rs +++ b/packages/rs-dapi/src/services/streaming_service/transaction_stream.rs @@ -170,6 +170,8 @@ impl StreamingServiceImpl { .ok_or_else(|| Status::invalid_argument("Must specify from_block"))?; let (tx, rx) = mpsc::channel(TRANSACTION_STREAM_BUFFER); + let timeout = Duration::from_millis(self.config.dapi.core_stream_timeout); + self.schedule_stream_timeout(tx.clone(), timeout, "transactions with proofs stream deadline exceeded"); if count > 0 { // Historical mode self.spawn_fetch_transactions_history( From 0c436ac19fa8143eb37db9a270daf73ecb9928a9 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:14:38 +0100 Subject: [PATCH 24/40] chore: apply rabbit's feedback and linter --- .github/scripts/check-grpc-coverage.py | 2 +- .../clients/drive/v0/nodejs/drive_pbjs.js | 10 +++++----- .../dash/platform/dapi/v0/PlatformGrpc.java | 6 +++--- .../platform/v0/nodejs/platform_pbjs.js | 10 +++++----- .../platform/v0/objective-c/Platform.pbrpc.h | 6 +++--- .../platform/v0/objective-c/Platform.pbrpc.m | 10 +++++----- .../platform/v0/python/platform_pb2.py | 6 +++--- .../platform/v0/python/platform_pb2_grpc.py | 14 ++++++------- .../platform/v0/web/platform_pb_service.d.ts | 4 ++-- .../platform/v0/web/platform_pb_service.js | 6 +++--- .../protos/platform/v0/platform.proto | 4 ++-- packages/dapi-grpc/src/lib.rs | 1 + packages/dashmate/docs/services/gateway.md | 4 ++-- .../templates/platform/gateway/envoy.yaml.dot | 2 +- packages/rs-dapi/src/server/grpc.rs | 2 +- .../src/services/platform_service/mod.rs | 4 ++-- packages/rs-drive-abci/src/query/service.rs | 4 ++-- .../tests/strategy_tests/main.rs | 2 +- packages/rs-sdk/src/sdk.rs | 20 ------------------- packages/rs-sdk/tests/fetch/config.rs | 1 + .../rs-sdk/tests/fetch/platform_events.rs | 3 ++- 21 files changed, 52 insertions(+), 69 deletions(-) diff --git a/.github/scripts/check-grpc-coverage.py b/.github/scripts/check-grpc-coverage.py index eb82fa38c41..a1c64eac924 100755 --- a/.github/scripts/check-grpc-coverage.py +++ b/.github/scripts/check-grpc-coverage.py @@ -14,7 +14,7 @@ # Queries that should be excluded from the check EXCLUDED_QUERIES = { 'broadcastStateTransition', # Explicitly excluded as per requirement - 'SubscribePlatformEvents', # Streaming RPC, excluded + 'subscribePlatformEvents', # Streaming RPC, excluded } # Mapping of proto query names to their expected SDK implementations diff --git a/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js b/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js index e280f66e20a..82e883d86fd 100644 --- a/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js +++ b/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js @@ -4610,28 +4610,28 @@ $root.org = (function() { /** * Callback as used by {@link org.dash.platform.dapi.v0.Platform#subscribePlatformEvents}. * @memberof org.dash.platform.dapi.v0.Platform - * @typedef SubscribePlatformEventsCallback + * @typedef subscribePlatformEventsCallback * @type {function} * @param {Error|null} error Error, if any * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} [response] PlatformSubscriptionResponse */ /** - * Calls SubscribePlatformEvents. + * Calls subscribePlatformEvents. * @function subscribePlatformEvents * @memberof org.dash.platform.dapi.v0.Platform * @instance * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest} request PlatformSubscriptionRequest message or plain object - * @param {org.dash.platform.dapi.v0.Platform.SubscribePlatformEventsCallback} callback Node-style callback called with the error, if any, and PlatformSubscriptionResponse + * @param {org.dash.platform.dapi.v0.Platform.subscribePlatformEventsCallback} callback Node-style callback called with the error, if any, and PlatformSubscriptionResponse * @returns {undefined} * @variation 1 */ Object.defineProperty(Platform.prototype.subscribePlatformEvents = function subscribePlatformEvents(request, callback) { return this.rpcCall(subscribePlatformEvents, $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest, $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse, request, callback); - }, "name", { value: "SubscribePlatformEvents" }); + }, "name", { value: "subscribePlatformEvents" }); /** - * Calls SubscribePlatformEvents. + * Calls subscribePlatformEvents. * @function subscribePlatformEvents * @memberof org.dash.platform.dapi.v0.Platform * @instance diff --git a/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java b/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java index 0eca2ab449d..23f228af480 100644 --- a/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java +++ b/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java @@ -1476,7 +1476,7 @@ org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersResponse> getG org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse> getSubscribePlatformEventsMethod; @io.grpc.stub.annotations.RpcMethod( - fullMethodName = SERVICE_NAME + '/' + "SubscribePlatformEvents", + fullMethodName = SERVICE_NAME + '/' + "subscribePlatformEvents", requestType = org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest.class, responseType = org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse.class, methodType = io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING) @@ -1489,13 +1489,13 @@ org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse> getSu PlatformGrpc.getSubscribePlatformEventsMethod = getSubscribePlatformEventsMethod = io.grpc.MethodDescriptor.newBuilder() .setType(io.grpc.MethodDescriptor.MethodType.SERVER_STREAMING) - .setFullMethodName(generateFullMethodName(SERVICE_NAME, "SubscribePlatformEvents")) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "subscribePlatformEvents")) .setSampledToLocalTracing(true) .setRequestMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest.getDefaultInstance())) .setResponseMarshaller(io.grpc.protobuf.ProtoUtils.marshaller( org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionResponse.getDefaultInstance())) - .setSchemaDescriptor(new PlatformMethodDescriptorSupplier("SubscribePlatformEvents")) + .setSchemaDescriptor(new PlatformMethodDescriptorSupplier("subscribePlatformEvents")) .build(); } } diff --git a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js index 5aab0bc9a8b..43bfde7773a 100644 --- a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js +++ b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js @@ -4102,28 +4102,28 @@ $root.org = (function() { /** * Callback as used by {@link org.dash.platform.dapi.v0.Platform#subscribePlatformEvents}. * @memberof org.dash.platform.dapi.v0.Platform - * @typedef SubscribePlatformEventsCallback + * @typedef subscribePlatformEventsCallback * @type {function} * @param {Error|null} error Error, if any * @param {org.dash.platform.dapi.v0.PlatformSubscriptionResponse} [response] PlatformSubscriptionResponse */ /** - * Calls SubscribePlatformEvents. + * Calls subscribePlatformEvents. * @function subscribePlatformEvents * @memberof org.dash.platform.dapi.v0.Platform * @instance * @param {org.dash.platform.dapi.v0.IPlatformSubscriptionRequest} request PlatformSubscriptionRequest message or plain object - * @param {org.dash.platform.dapi.v0.Platform.SubscribePlatformEventsCallback} callback Node-style callback called with the error, if any, and PlatformSubscriptionResponse + * @param {org.dash.platform.dapi.v0.Platform.subscribePlatformEventsCallback} callback Node-style callback called with the error, if any, and PlatformSubscriptionResponse * @returns {undefined} * @variation 1 */ Object.defineProperty(Platform.prototype.subscribePlatformEvents = function subscribePlatformEvents(request, callback) { return this.rpcCall(subscribePlatformEvents, $root.org.dash.platform.dapi.v0.PlatformSubscriptionRequest, $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse, request, callback); - }, "name", { value: "SubscribePlatformEvents" }); + }, "name", { value: "subscribePlatformEvents" }); /** - * Calls SubscribePlatformEvents. + * Calls subscribePlatformEvents. * @function subscribePlatformEvents * @memberof org.dash.platform.dapi.v0.Platform * @instance diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h index b2655bceda4..3c3a6a88058 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h @@ -342,7 +342,7 @@ NS_ASSUME_NONNULL_BEGIN - (GRPCUnaryProtoCall *)getGroupActionSignersWithMessage:(GetGroupActionSignersRequest *)message responseHandler:(id)handler callOptions:(GRPCCallOptions *_Nullable)callOptions; -#pragma mark SubscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse) +#pragma mark subscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse) /** * Bi-directional stream for multiplexed platform events subscriptions @@ -736,7 +736,7 @@ NS_ASSUME_NONNULL_BEGIN - (GRPCProtoCall *)RPCTogetGroupActionSignersWithRequest:(GetGroupActionSignersRequest *)request handler:(void(^)(GetGroupActionSignersResponse *_Nullable response, NSError *_Nullable error))handler; -#pragma mark SubscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse) +#pragma mark subscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse) /** * Bi-directional stream for multiplexed platform events subscriptions @@ -750,7 +750,7 @@ NS_ASSUME_NONNULL_BEGIN * * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended. */ -- (GRPCProtoCall *)RPCToSubscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)request eventHandler:(void(^)(BOOL done, PlatformSubscriptionResponse *_Nullable response, NSError *_Nullable error))eventHandler; +- (GRPCProtoCall *)RPCTosubscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)request eventHandler:(void(^)(BOOL done, PlatformSubscriptionResponse *_Nullable response, NSError *_Nullable error))eventHandler; @end diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m index ac2bf5e6196..5b3f47ebef3 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m @@ -1075,7 +1075,7 @@ - (GRPCUnaryProtoCall *)getGroupActionSignersWithMessage:(GetGroupActionSignersR responseClass:[GetGroupActionSignersResponse class]]; } -#pragma mark SubscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse) +#pragma mark subscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse) /** * Bi-directional stream for multiplexed platform events subscriptions @@ -1083,7 +1083,7 @@ - (GRPCUnaryProtoCall *)getGroupActionSignersWithMessage:(GetGroupActionSignersR * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended. */ - (void)subscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)request eventHandler:(void(^)(BOOL done, PlatformSubscriptionResponse *_Nullable response, NSError *_Nullable error))eventHandler{ - [[self RPCToSubscribePlatformEventsWithRequest:request eventHandler:eventHandler] start]; + [[self RPCTosubscribePlatformEventsWithRequest:request eventHandler:eventHandler] start]; } // Returns a not-yet-started RPC object. /** @@ -1091,8 +1091,8 @@ - (void)subscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)reques * * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended. */ -- (GRPCProtoCall *)RPCToSubscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)request eventHandler:(void(^)(BOOL done, PlatformSubscriptionResponse *_Nullable response, NSError *_Nullable error))eventHandler{ - return [self RPCToMethod:@"SubscribePlatformEvents" +- (GRPCProtoCall *)RPCTosubscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)request eventHandler:(void(^)(BOOL done, PlatformSubscriptionResponse *_Nullable response, NSError *_Nullable error))eventHandler{ + return [self RPCToMethod:@"subscribePlatformEvents" requestsWriter:[GRXWriter writerWithValue:request] responseClass:[PlatformSubscriptionResponse class] responsesWriteable:[GRXWriteable writeableWithEventHandler:eventHandler]]; @@ -1101,7 +1101,7 @@ - (GRPCProtoCall *)RPCToSubscribePlatformEventsWithRequest:(PlatformSubscription * Bi-directional stream for multiplexed platform events subscriptions */ - (GRPCUnaryProtoCall *)subscribePlatformEventsWithMessage:(PlatformSubscriptionRequest *)message responseHandler:(id)handler callOptions:(GRPCCallOptions *_Nullable)callOptions { - return [self RPCToMethod:@"SubscribePlatformEvents" + return [self RPCToMethod:@"subscribePlatformEvents" message:message responseHandler:handler callOptions:callOptions diff --git a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py index 4d3c2db6bc7..5bc9a3e8dc2 100644 --- a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py +++ b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py @@ -23,7 +23,7 @@ syntax='proto3', serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x0eplatform.proto\x12\x19org.dash.platform.dapi.v0\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xfd\x01\n\x1bPlatformSubscriptionRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0H\x00\x1ao\n\x1dPlatformSubscriptionRequestV0\x12;\n\x06\x66ilter\x18\x01 \x01(\x0b\x32+.org.dash.platform.dapi.v0.PlatformFilterV0\x12\x11\n\tkeepalive\x18\x02 \x01(\rB\t\n\x07version\"\x8c\x02\n\x1cPlatformSubscriptionResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0H\x00\x1a{\n\x1ePlatformSubscriptionResponseV0\x12\x1e\n\x16\x63lient_subscription_id\x18\x01 \x01(\t\x12\x39\n\x05\x65vent\x18\x02 \x01(\x0b\x32*.org.dash.platform.dapi.v0.PlatformEventV0B\t\n\x07version\"?\n\x1bStateTransitionResultFilter\x12\x14\n\x07tx_hash\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\n\n\x08_tx_hash\"\x9f\x01\n\x10PlatformFilterV0\x12\r\n\x03\x61ll\x18\x01 \x01(\x08H\x00\x12\x19\n\x0f\x62lock_committed\x18\x02 \x01(\x08H\x00\x12Y\n\x17state_transition_result\x18\x03 \x01(\x0b\x32\x36.org.dash.platform.dapi.v0.StateTransitionResultFilterH\x00\x42\x06\n\x04kind\"\xe5\x04\n\x0fPlatformEventV0\x12T\n\x0f\x62lock_committed\x18\x01 \x01(\x0b\x32\x39.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommittedH\x00\x12i\n\x1astate_transition_finalized\x18\x02 \x01(\x0b\x32\x43.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalizedH\x00\x12I\n\tkeepalive\x18\x03 \x01(\x0b\x32\x34.org.dash.platform.dapi.v0.PlatformEventV0.KeepaliveH\x00\x1aO\n\rBlockMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x13\n\x07time_ms\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rblock_id_hash\x18\x03 \x01(\x0c\x1aj\n\x0e\x42lockCommitted\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x10\n\x08tx_count\x18\x02 \x01(\r\x1as\n\x18StateTransitionFinalized\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x0f\n\x07tx_hash\x18\x02 \x01(\x0c\x1a\x0b\n\tKeepaliveB\x07\n\x05\x65vent\"\x81\x01\n\x05Proof\x12\x15\n\rgrovedb_proof\x18\x01 \x01(\x0c\x12\x13\n\x0bquorum_hash\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\r\n\x05round\x18\x04 \x01(\r\x12\x15\n\rblock_id_hash\x18\x05 \x01(\x0c\x12\x13\n\x0bquorum_type\x18\x06 \x01(\r\"\x98\x01\n\x10ResponseMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12 \n\x18\x63ore_chain_locked_height\x18\x02 \x01(\r\x12\r\n\x05\x65poch\x18\x03 \x01(\r\x12\x13\n\x07time_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x18\n\x10protocol_version\x18\x05 \x01(\r\x12\x10\n\x08\x63hain_id\x18\x06 \x01(\t\"L\n\x1dStateTransitionBroadcastError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\";\n\x1f\x42roadcastStateTransitionRequest\x12\x18\n\x10state_transition\x18\x01 \x01(\x0c\"\"\n BroadcastStateTransitionResponse\"\xa4\x01\n\x12GetIdentityRequest\x12P\n\x02v0\x18\x01 \x01(\x0b\x32\x42.org.dash.platform.dapi.v0.GetIdentityRequest.GetIdentityRequestV0H\x00\x1a\x31\n\x14GetIdentityRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xc1\x01\n\x17GetIdentityNonceRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityNonceRequest.GetIdentityNonceRequestV0H\x00\x1a?\n\x19GetIdentityNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xf6\x01\n\x1fGetIdentityContractNonceRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest.GetIdentityContractNonceRequestV0H\x00\x1a\\\n!GetIdentityContractNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xc0\x01\n\x19GetIdentityBalanceRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetIdentityBalanceRequest.GetIdentityBalanceRequestV0H\x00\x1a\x38\n\x1bGetIdentityBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xec\x01\n$GetIdentityBalanceAndRevisionRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest.GetIdentityBalanceAndRevisionRequestV0H\x00\x1a\x43\n&GetIdentityBalanceAndRevisionRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9e\x02\n\x13GetIdentityResponse\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetIdentityResponse.GetIdentityResponseV0H\x00\x1a\xa7\x01\n\x15GetIdentityResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbc\x02\n\x18GetIdentityNonceResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetIdentityNonceResponse.GetIdentityNonceResponseV0H\x00\x1a\xb6\x01\n\x1aGetIdentityNonceResponseV0\x12\x1c\n\x0eidentity_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xe5\x02\n GetIdentityContractNonceResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse.GetIdentityContractNonceResponseV0H\x00\x1a\xc7\x01\n\"GetIdentityContractNonceResponseV0\x12%\n\x17identity_contract_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n\x1aGetIdentityBalanceResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetIdentityBalanceResponse.GetIdentityBalanceResponseV0H\x00\x1a\xb1\x01\n\x1cGetIdentityBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb1\x04\n%GetIdentityBalanceAndRevisionResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0H\x00\x1a\x84\x03\n\'GetIdentityBalanceAndRevisionResponseV0\x12\x9b\x01\n\x14\x62\x61lance_and_revision\x18\x01 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0.BalanceAndRevisionH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x12\x42\x61lanceAndRevision\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x14\n\x08revision\x18\x02 \x01(\x04\x42\x02\x30\x01\x42\x08\n\x06resultB\t\n\x07version\"\xd1\x01\n\x0eKeyRequestType\x12\x36\n\x08\x61ll_keys\x18\x01 \x01(\x0b\x32\".org.dash.platform.dapi.v0.AllKeysH\x00\x12@\n\rspecific_keys\x18\x02 \x01(\x0b\x32\'.org.dash.platform.dapi.v0.SpecificKeysH\x00\x12:\n\nsearch_key\x18\x03 \x01(\x0b\x32$.org.dash.platform.dapi.v0.SearchKeyH\x00\x42\t\n\x07request\"\t\n\x07\x41llKeys\"\x1f\n\x0cSpecificKeys\x12\x0f\n\x07key_ids\x18\x01 \x03(\r\"\xb6\x01\n\tSearchKey\x12I\n\x0bpurpose_map\x18\x01 \x03(\x0b\x32\x34.org.dash.platform.dapi.v0.SearchKey.PurposeMapEntry\x1a^\n\x0fPurposeMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.org.dash.platform.dapi.v0.SecurityLevelMap:\x02\x38\x01\"\xbf\x02\n\x10SecurityLevelMap\x12]\n\x12security_level_map\x18\x01 \x03(\x0b\x32\x41.org.dash.platform.dapi.v0.SecurityLevelMap.SecurityLevelMapEntry\x1aw\n\x15SecurityLevelMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12M\n\x05value\x18\x02 \x01(\x0e\x32>.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType:\x02\x38\x01\"S\n\x12KeyKindRequestType\x12\x1f\n\x1b\x43URRENT_KEY_OF_KIND_REQUEST\x10\x00\x12\x1c\n\x18\x41LL_KEYS_OF_KIND_REQUEST\x10\x01\"\xda\x02\n\x16GetIdentityKeysRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetIdentityKeysRequest.GetIdentityKeysRequestV0H\x00\x1a\xda\x01\n\x18GetIdentityKeysRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12?\n\x0crequest_type\x18\x02 \x01(\x0b\x32).org.dash.platform.dapi.v0.KeyRequestType\x12+\n\x05limit\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\x99\x03\n\x17GetIdentityKeysResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0H\x00\x1a\x96\x02\n\x19GetIdentityKeysResponseV0\x12\x61\n\x04keys\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0.KeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1a\n\x04Keys\x12\x12\n\nkeys_bytes\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xef\x02\n GetIdentitiesContractKeysRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest.GetIdentitiesContractKeysRequestV0H\x00\x1a\xd1\x01\n\"GetIdentitiesContractKeysRequestV0\x12\x16\n\x0eidentities_ids\x18\x01 \x03(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\x1f\n\x12\x64ocument_type_name\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x08purposes\x18\x04 \x03(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x15\n\x13_document_type_nameB\t\n\x07version\"\xdf\x06\n!GetIdentitiesContractKeysResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0H\x00\x1a\xbe\x05\n#GetIdentitiesContractKeysResponseV0\x12\x8a\x01\n\x0fidentities_keys\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentitiesKeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aY\n\x0bPurposeKeys\x12\x36\n\x07purpose\x18\x01 \x01(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\x12\n\nkeys_bytes\x18\x02 \x03(\x0c\x1a\x9f\x01\n\x0cIdentityKeys\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12z\n\x04keys\x18\x02 \x03(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.PurposeKeys\x1a\x90\x01\n\x0eIdentitiesKeys\x12~\n\x07\x65ntries\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentityKeysB\x08\n\x06resultB\t\n\x07version\"\xa4\x02\n*GetEvonodesProposedEpochBlocksByIdsRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest.GetEvonodesProposedEpochBlocksByIdsRequestV0H\x00\x1ah\n,GetEvonodesProposedEpochBlocksByIdsRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0b\n\x03ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x08\n\x06_epochB\t\n\x07version\"\x92\x06\n&GetEvonodesProposedEpochBlocksResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0H\x00\x1a\xe2\x04\n(GetEvonodesProposedEpochBlocksResponseV0\x12\xb1\x01\n#evonodes_proposed_block_counts_info\x18\x01 \x01(\x0b\x32\x81\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodesProposedBlocksH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x15\x45vonodeProposedBlocks\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x11\n\x05\x63ount\x18\x02 \x01(\x04\x42\x02\x30\x01\x1a\xc4\x01\n\x16\x45vonodesProposedBlocks\x12\xa9\x01\n\x1e\x65vonodes_proposed_block_counts\x18\x01 \x03(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodeProposedBlocksB\x08\n\x06resultB\t\n\x07version\"\xf2\x02\n,GetEvonodesProposedEpochBlocksByRangeRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest.GetEvonodesProposedEpochBlocksByRangeRequestV0H\x00\x1a\xaf\x01\n.GetEvonodesProposedEpochBlocksByRangeRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x02 \x01(\rH\x02\x88\x01\x01\x12\x15\n\x0bstart_after\x18\x03 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x04 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x07\n\x05startB\x08\n\x06_epochB\x08\n\x06_limitB\t\n\x07version\"\xcd\x01\n\x1cGetIdentitiesBalancesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest.GetIdentitiesBalancesRequestV0H\x00\x1a<\n\x1eGetIdentitiesBalancesRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9f\x05\n\x1dGetIdentitiesBalancesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0H\x00\x1a\x8a\x04\n\x1fGetIdentitiesBalancesResponseV0\x12\x8a\x01\n\x13identities_balances\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentitiesBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aL\n\x0fIdentityBalance\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x8f\x01\n\x12IdentitiesBalances\x12y\n\x07\x65ntries\x18\x01 \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentityBalanceB\x08\n\x06resultB\t\n\x07version\"\xb4\x01\n\x16GetDataContractRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetDataContractRequest.GetDataContractRequestV0H\x00\x1a\x35\n\x18GetDataContractRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xb3\x02\n\x17GetDataContractResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractResponse.GetDataContractResponseV0H\x00\x1a\xb0\x01\n\x19GetDataContractResponseV0\x12\x17\n\rdata_contract\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb9\x01\n\x17GetDataContractsRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractsRequest.GetDataContractsRequestV0H\x00\x1a\x37\n\x19GetDataContractsRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xcf\x04\n\x18GetDataContractsResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetDataContractsResponse.GetDataContractsResponseV0H\x00\x1a[\n\x11\x44\x61taContractEntry\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x32\n\rdata_contract\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x1au\n\rDataContracts\x12\x64\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32\x45.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractEntry\x1a\xf5\x01\n\x1aGetDataContractsResponseV0\x12[\n\x0e\x64\x61ta_contracts\x18\x01 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc5\x02\n\x1dGetDataContractHistoryRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetDataContractHistoryRequest.GetDataContractHistoryRequestV0H\x00\x1a\xb0\x01\n\x1fGetDataContractHistoryRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0bstart_at_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xb2\x05\n\x1eGetDataContractHistoryResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0H\x00\x1a\x9a\x04\n GetDataContractHistoryResponseV0\x12\x8f\x01\n\x15\x64\x61ta_contract_history\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a;\n\x18\x44\x61taContractHistoryEntry\x12\x10\n\x04\x64\x61te\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05value\x18\x02 \x01(\x0c\x1a\xaa\x01\n\x13\x44\x61taContractHistory\x12\x92\x01\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32s.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryEntryB\x08\n\x06resultB\t\n\x07version\"\xb2\x02\n\x13GetDocumentsRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetDocumentsRequest.GetDocumentsRequestV0H\x00\x1a\xbb\x01\n\x15GetDocumentsRequestV0\x12\x18\n\x10\x64\x61ta_contract_id\x18\x01 \x01(\x0c\x12\x15\n\rdocument_type\x18\x02 \x01(\t\x12\r\n\x05where\x18\x03 \x01(\x0c\x12\x10\n\x08order_by\x18\x04 \x01(\x0c\x12\r\n\x05limit\x18\x05 \x01(\r\x12\x15\n\x0bstart_after\x18\x06 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x07 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x08 \x01(\x08\x42\x07\n\x05startB\t\n\x07version\"\x95\x03\n\x14GetDocumentsResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0H\x00\x1a\x9b\x02\n\x16GetDocumentsResponseV0\x12\x65\n\tdocuments\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0.DocumentsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1e\n\tDocuments\x12\x11\n\tdocuments\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xed\x01\n!GetIdentityByPublicKeyHashRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest.GetIdentityByPublicKeyHashRequestV0H\x00\x1aM\n#GetIdentityByPublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xda\x02\n\"GetIdentityByPublicKeyHashResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse.GetIdentityByPublicKeyHashResponseV0H\x00\x1a\xb6\x01\n$GetIdentityByPublicKeyHashResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n*GetIdentityByNonUniquePublicKeyHashRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest.GetIdentityByNonUniquePublicKeyHashRequestV0H\x00\x1a\x80\x01\n,GetIdentityByNonUniquePublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\x18\n\x0bstart_after\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x0e\n\x0c_start_afterB\t\n\x07version\"\xd6\x06\n+GetIdentityByNonUniquePublicKeyHashResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0H\x00\x1a\x96\x05\n-GetIdentityByNonUniquePublicKeyHashResponseV0\x12\x9a\x01\n\x08identity\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityResponseH\x00\x12\x9d\x01\n\x05proof\x18\x02 \x01(\x0b\x32\x8b\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityProvedResponseH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x36\n\x10IdentityResponse\x12\x15\n\x08identity\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x0b\n\t_identity\x1a\xa6\x01\n\x16IdentityProvedResponse\x12P\n&grovedb_identity_public_key_hash_proof\x18\x01 \x01(\x0b\x32 .org.dash.platform.dapi.v0.Proof\x12!\n\x14identity_proof_bytes\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x17\n\x15_identity_proof_bytesB\x08\n\x06resultB\t\n\x07version\"\xfb\x01\n#WaitForStateTransitionResultRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0H\x00\x1aU\n%WaitForStateTransitionResultRequestV0\x12\x1d\n\x15state_transition_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x99\x03\n$WaitForStateTransitionResultResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0H\x00\x1a\xef\x01\n&WaitForStateTransitionResultResponseV0\x12I\n\x05\x65rror\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.StateTransitionBroadcastErrorH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x19GetConsensusParamsRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetConsensusParamsRequest.GetConsensusParamsRequestV0H\x00\x1a<\n\x1bGetConsensusParamsRequestV0\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9c\x04\n\x1aGetConsensusParamsResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetConsensusParamsResponse.GetConsensusParamsResponseV0H\x00\x1aP\n\x14\x43onsensusParamsBlock\x12\x11\n\tmax_bytes\x18\x01 \x01(\t\x12\x0f\n\x07max_gas\x18\x02 \x01(\t\x12\x14\n\x0ctime_iota_ms\x18\x03 \x01(\t\x1a\x62\n\x17\x43onsensusParamsEvidence\x12\x1a\n\x12max_age_num_blocks\x18\x01 \x01(\t\x12\x18\n\x10max_age_duration\x18\x02 \x01(\t\x12\x11\n\tmax_bytes\x18\x03 \x01(\t\x1a\xda\x01\n\x1cGetConsensusParamsResponseV0\x12Y\n\x05\x62lock\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsBlock\x12_\n\x08\x65vidence\x18\x02 \x01(\x0b\x32M.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsEvidenceB\t\n\x07version\"\xe4\x01\n%GetProtocolVersionUpgradeStateRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest.GetProtocolVersionUpgradeStateRequestV0H\x00\x1a\x38\n\'GetProtocolVersionUpgradeStateRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xb5\x05\n&GetProtocolVersionUpgradeStateResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0H\x00\x1a\x85\x04\n(GetProtocolVersionUpgradeStateResponseV0\x12\x87\x01\n\x08versions\x18\x01 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x96\x01\n\x08Versions\x12\x89\x01\n\x08versions\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionEntry\x1a:\n\x0cVersionEntry\x12\x16\n\x0eversion_number\x18\x01 \x01(\r\x12\x12\n\nvote_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xa3\x02\n*GetProtocolVersionUpgradeVoteStatusRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest.GetProtocolVersionUpgradeVoteStatusRequestV0H\x00\x1ag\n,GetProtocolVersionUpgradeVoteStatusRequestV0\x12\x19\n\x11start_pro_tx_hash\x18\x01 \x01(\x0c\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xef\x05\n+GetProtocolVersionUpgradeVoteStatusResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0H\x00\x1a\xaf\x04\n-GetProtocolVersionUpgradeVoteStatusResponseV0\x12\x98\x01\n\x08versions\x18\x01 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignalsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xaf\x01\n\x0eVersionSignals\x12\x9c\x01\n\x0fversion_signals\x18\x01 \x03(\x0b\x32\x82\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignal\x1a\x35\n\rVersionSignal\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07version\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xf5\x01\n\x14GetEpochsInfoRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetEpochsInfoRequest.GetEpochsInfoRequestV0H\x00\x1a|\n\x16GetEpochsInfoRequestV0\x12\x31\n\x0bstart_epoch\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\x11\n\tascending\x18\x03 \x01(\x08\x12\r\n\x05prove\x18\x04 \x01(\x08\x42\t\n\x07version\"\x99\x05\n\x15GetEpochsInfoResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0H\x00\x1a\x9c\x04\n\x17GetEpochsInfoResponseV0\x12\x65\n\x06\x65pochs\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1au\n\nEpochInfos\x12g\n\x0b\x65poch_infos\x18\x01 \x03(\x0b\x32R.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfo\x1a\xa6\x01\n\tEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x16\n\nstart_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xbf\x02\n\x1dGetFinalizedEpochInfosRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest.GetFinalizedEpochInfosRequestV0H\x00\x1a\xaa\x01\n\x1fGetFinalizedEpochInfosRequestV0\x12\x19\n\x11start_epoch_index\x18\x01 \x01(\r\x12\"\n\x1astart_epoch_index_included\x18\x02 \x01(\x08\x12\x17\n\x0f\x65nd_epoch_index\x18\x03 \x01(\r\x12 \n\x18\x65nd_epoch_index_included\x18\x04 \x01(\x08\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xbd\t\n\x1eGetFinalizedEpochInfosResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0H\x00\x1a\xa5\x08\n GetFinalizedEpochInfosResponseV0\x12\x80\x01\n\x06\x65pochs\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xa4\x01\n\x13\x46inalizedEpochInfos\x12\x8c\x01\n\x15\x66inalized_epoch_infos\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfo\x1a\x9f\x04\n\x12\x46inalizedEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x1c\n\x10\x66irst_block_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\r\x12!\n\x15total_blocks_in_epoch\x18\x07 \x01(\x04\x42\x02\x30\x01\x12*\n\"next_epoch_start_core_block_height\x18\x08 \x01(\r\x12!\n\x15total_processing_fees\x18\t \x01(\x04\x42\x02\x30\x01\x12*\n\x1etotal_distributed_storage_fees\x18\n \x01(\x04\x42\x02\x30\x01\x12&\n\x1atotal_created_storage_fees\x18\x0b \x01(\x04\x42\x02\x30\x01\x12\x1e\n\x12\x63ore_block_rewards\x18\x0c \x01(\x04\x42\x02\x30\x01\x12\x81\x01\n\x0f\x62lock_proposers\x18\r \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.BlockProposer\x1a\x39\n\rBlockProposer\x12\x13\n\x0bproposer_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x62lock_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xde\x04\n\x1cGetContestedResourcesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0H\x00\x1a\xcc\x03\n\x1eGetContestedResourcesRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x1a\n\x12start_index_values\x18\x04 \x03(\x0c\x12\x18\n\x10\x65nd_index_values\x18\x05 \x03(\x0c\x12\x89\x01\n\x13start_at_value_info\x18\x06 \x01(\x0b\x32g.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0.StartAtValueInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1a\x45\n\x10StartAtValueInfo\x12\x13\n\x0bstart_value\x18\x01 \x01(\x0c\x12\x1c\n\x14start_value_included\x18\x02 \x01(\x08\x42\x16\n\x14_start_at_value_infoB\x08\n\x06_countB\t\n\x07version\"\x88\x04\n\x1dGetContestedResourcesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0H\x00\x1a\xf3\x02\n\x1fGetContestedResourcesResponseV0\x12\x95\x01\n\x19\x63ontested_resource_values\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0.ContestedResourceValuesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a<\n\x17\x43ontestedResourceValues\x12!\n\x19\x63ontested_resource_values\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x05\n\x1cGetVotePollsByEndDateRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0H\x00\x1a\xc0\x04\n\x1eGetVotePollsByEndDateRequestV0\x12\x84\x01\n\x0fstart_time_info\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.StartAtTimeInfoH\x00\x88\x01\x01\x12\x80\x01\n\rend_time_info\x18\x02 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.EndAtTimeInfoH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x11\n\tascending\x18\x05 \x01(\x08\x12\r\n\x05prove\x18\x06 \x01(\x08\x1aI\n\x0fStartAtTimeInfo\x12\x19\n\rstart_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13start_time_included\x18\x02 \x01(\x08\x1a\x43\n\rEndAtTimeInfo\x12\x17\n\x0b\x65nd_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x65nd_time_included\x18\x02 \x01(\x08\x42\x12\n\x10_start_time_infoB\x10\n\x0e_end_time_infoB\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07version\"\x83\x06\n\x1dGetVotePollsByEndDateResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0H\x00\x1a\xee\x04\n\x1fGetVotePollsByEndDateResponseV0\x12\x9c\x01\n\x18vote_polls_by_timestamps\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestampsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aV\n\x1eSerializedVotePollsByTimestamp\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x15serialized_vote_polls\x18\x02 \x03(\x0c\x1a\xd7\x01\n\x1fSerializedVotePollsByTimestamps\x12\x99\x01\n\x18vote_polls_by_timestamps\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestamp\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xff\x06\n$GetContestedResourceVoteStateRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0H\x00\x1a\xd5\x05\n&GetContestedResourceVoteStateRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x86\x01\n\x0bresult_type\x18\x05 \x01(\x0e\x32q.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.ResultType\x12\x36\n.allow_include_locked_and_abstaining_vote_tally\x18\x06 \x01(\x08\x12\xa3\x01\n\x18start_at_identifier_info\x18\x07 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x08 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\"I\n\nResultType\x12\r\n\tDOCUMENTS\x10\x00\x12\x0e\n\nVOTE_TALLY\x10\x01\x12\x1c\n\x18\x44OCUMENTS_AND_VOTE_TALLY\x10\x02\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\x94\x0c\n%GetContestedResourceVoteStateResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0H\x00\x1a\xe7\n\n\'GetContestedResourceVoteStateResponseV0\x12\xae\x01\n\x1d\x63ontested_resource_contenders\x18\x01 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.ContestedResourceContendersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xda\x03\n\x10\x46inishedVoteInfo\x12\xad\x01\n\x15\x66inished_vote_outcome\x18\x01 \x01(\x0e\x32\x8d\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfo.FinishedVoteOutcome\x12\x1f\n\x12won_by_identity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12$\n\x18\x66inished_at_block_height\x18\x03 \x01(\x04\x42\x02\x30\x01\x12%\n\x1d\x66inished_at_core_block_height\x18\x04 \x01(\r\x12%\n\x19\x66inished_at_block_time_ms\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x66inished_at_epoch\x18\x06 \x01(\r\"O\n\x13\x46inishedVoteOutcome\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\n\n\x06LOCKED\x10\x01\x12\x16\n\x12NO_PREVIOUS_WINNER\x10\x02\x42\x15\n\x13_won_by_identity_id\x1a\xc4\x03\n\x1b\x43ontestedResourceContenders\x12\x86\x01\n\ncontenders\x18\x01 \x03(\x0b\x32r.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.Contender\x12\x1f\n\x12\x61\x62stain_vote_tally\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0flock_vote_tally\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x9a\x01\n\x12\x66inished_vote_info\x18\x04 \x01(\x0b\x32y.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfoH\x02\x88\x01\x01\x42\x15\n\x13_abstain_vote_tallyB\x12\n\x10_lock_vote_tallyB\x15\n\x13_finished_vote_info\x1ak\n\tContender\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x17\n\nvote_count\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08\x64ocument\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x42\r\n\x0b_vote_countB\x0b\n\t_documentB\x08\n\x06resultB\t\n\x07version\"\xd5\x05\n,GetContestedResourceVotersForIdentityRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0H\x00\x1a\x92\x04\n.GetContestedResourceVotersForIdentityRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x15\n\rcontestant_id\x18\x05 \x01(\x0c\x12\xb4\x01\n\x18start_at_identifier_info\x18\x06 \x01(\x0b\x32\x8c\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\xf1\x04\n-GetContestedResourceVotersForIdentityResponse\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0H\x00\x1a\xab\x03\n/GetContestedResourceVotersForIdentityResponseV0\x12\xb6\x01\n\x19\x63ontested_resource_voters\x18\x01 \x01(\x0b\x32\x90\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0.ContestedResourceVotersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x43\n\x17\x43ontestedResourceVoters\x12\x0e\n\x06voters\x18\x01 \x03(\x0c\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xad\x05\n(GetContestedResourceIdentityVotesRequest\x12|\n\x02v0\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0H\x00\x1a\xf7\x03\n*GetContestedResourceIdentityVotesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0forder_ascending\x18\x04 \x01(\x08\x12\xae\x01\n\x1astart_at_vote_poll_id_info\x18\x05 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0.StartAtVotePollIdInfoH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x1a\x61\n\x15StartAtVotePollIdInfo\x12 \n\x18start_at_poll_identifier\x18\x01 \x01(\x0c\x12&\n\x1estart_poll_identifier_included\x18\x02 \x01(\x08\x42\x1d\n\x1b_start_at_vote_poll_id_infoB\t\n\x07version\"\xc8\n\n)GetContestedResourceIdentityVotesResponse\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0H\x00\x1a\x8f\t\n+GetContestedResourceIdentityVotesResponseV0\x12\xa1\x01\n\x05votes\x18\x01 \x01(\x0b\x32\x8f\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVotesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xf7\x01\n\x1e\x43ontestedResourceIdentityVotes\x12\xba\x01\n!contested_resource_identity_votes\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVote\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x1a\xad\x02\n\x12ResourceVoteChoice\x12\xad\x01\n\x10vote_choice_type\x18\x01 \x01(\x0e\x32\x92\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoice.VoteChoiceType\x12\x18\n\x0bidentity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\"=\n\x0eVoteChoiceType\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\x0b\n\x07\x41\x42STAIN\x10\x01\x12\x08\n\x04LOCK\x10\x02\x42\x0e\n\x0c_identity_id\x1a\x95\x02\n\x1d\x43ontestedResourceIdentityVote\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\'\n\x1fserialized_index_storage_values\x18\x03 \x03(\x0c\x12\x99\x01\n\x0bvote_choice\x18\x04 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoiceB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n%GetPrefundedSpecializedBalanceRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest.GetPrefundedSpecializedBalanceRequestV0H\x00\x1a\x44\n\'GetPrefundedSpecializedBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xed\x02\n&GetPrefundedSpecializedBalanceResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse.GetPrefundedSpecializedBalanceResponseV0H\x00\x1a\xbd\x01\n(GetPrefundedSpecializedBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xd0\x01\n GetTotalCreditsInPlatformRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest.GetTotalCreditsInPlatformRequestV0H\x00\x1a\x33\n\"GetTotalCreditsInPlatformRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xd9\x02\n!GetTotalCreditsInPlatformResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse.GetTotalCreditsInPlatformResponseV0H\x00\x1a\xb8\x01\n#GetTotalCreditsInPlatformResponseV0\x12\x15\n\x07\x63redits\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x16GetPathElementsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetPathElementsRequest.GetPathElementsRequestV0H\x00\x1a\x45\n\x18GetPathElementsRequestV0\x12\x0c\n\x04path\x18\x01 \x03(\x0c\x12\x0c\n\x04keys\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xa3\x03\n\x17GetPathElementsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0H\x00\x1a\xa0\x02\n\x19GetPathElementsResponseV0\x12i\n\x08\x65lements\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0.ElementsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1c\n\x08\x45lements\x12\x10\n\x08\x65lements\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\x81\x01\n\x10GetStatusRequest\x12L\n\x02v0\x18\x01 \x01(\x0b\x32>.org.dash.platform.dapi.v0.GetStatusRequest.GetStatusRequestV0H\x00\x1a\x14\n\x12GetStatusRequestV0B\t\n\x07version\"\xd0\x10\n\x11GetStatusResponse\x12N\n\x02v0\x18\x01 \x01(\x0b\x32@.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0H\x00\x1a\xdf\x0f\n\x13GetStatusResponseV0\x12Y\n\x07version\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version\x12S\n\x04node\x18\x02 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Node\x12U\n\x05\x63hain\x18\x03 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Chain\x12Y\n\x07network\x18\x04 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Network\x12^\n\nstate_sync\x18\x05 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.StateSync\x12S\n\x04time\x18\x06 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Time\x1a\xee\x04\n\x07Version\x12\x63\n\x08software\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Software\x12\x63\n\x08protocol\x18\x02 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol\x1a^\n\x08Software\x12\x0c\n\x04\x64\x61pi\x18\x01 \x01(\t\x12\x12\n\x05\x64rive\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ntenderdash\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_driveB\r\n\x0b_tenderdash\x1a\xb8\x02\n\x08Protocol\x12p\n\ntenderdash\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Tenderdash\x12\x66\n\x05\x64rive\x18\x02 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Drive\x1a(\n\nTenderdash\x12\x0b\n\x03p2p\x18\x01 \x01(\r\x12\r\n\x05\x62lock\x18\x02 \x01(\r\x1a(\n\x05\x44rive\x12\x0e\n\x06latest\x18\x03 \x01(\r\x12\x0f\n\x07\x63urrent\x18\x04 \x01(\r\x1a\x7f\n\x04Time\x12\x11\n\x05local\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x05\x62lock\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x12\x18\n\x07genesis\x18\x03 \x01(\x04\x42\x02\x30\x01H\x01\x88\x01\x01\x12\x12\n\x05\x65poch\x18\x04 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_blockB\n\n\x08_genesisB\x08\n\x06_epoch\x1a<\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x18\n\x0bpro_tx_hash\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x0e\n\x0c_pro_tx_hash\x1a\xb3\x02\n\x05\x43hain\x12\x13\n\x0b\x63\x61tching_up\x18\x01 \x01(\x08\x12\x19\n\x11latest_block_hash\x18\x02 \x01(\x0c\x12\x17\n\x0flatest_app_hash\x18\x03 \x01(\x0c\x12\x1f\n\x13latest_block_height\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13\x65\x61rliest_block_hash\x18\x05 \x01(\x0c\x12\x19\n\x11\x65\x61rliest_app_hash\x18\x06 \x01(\x0c\x12!\n\x15\x65\x61rliest_block_height\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15max_peer_block_height\x18\t \x01(\x04\x42\x02\x30\x01\x12%\n\x18\x63ore_chain_locked_height\x18\n \x01(\rH\x00\x88\x01\x01\x42\x1b\n\x19_core_chain_locked_height\x1a\x43\n\x07Network\x12\x10\n\x08\x63hain_id\x18\x01 \x01(\t\x12\x13\n\x0bpeers_count\x18\x02 \x01(\r\x12\x11\n\tlistening\x18\x03 \x01(\x08\x1a\x85\x02\n\tStateSync\x12\x1d\n\x11total_synced_time\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1a\n\x0eremaining_time\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0ftotal_snapshots\x18\x03 \x01(\r\x12\"\n\x16\x63hunk_process_avg_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x0fsnapshot_height\x18\x05 \x01(\x04\x42\x02\x30\x01\x12!\n\x15snapshot_chunks_count\x18\x06 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x11\x62\x61\x63kfilled_blocks\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15\x62\x61\x63kfill_blocks_total\x18\x08 \x01(\x04\x42\x02\x30\x01\x42\t\n\x07version\"\xb1\x01\n\x1cGetCurrentQuorumsInfoRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest.GetCurrentQuorumsInfoRequestV0H\x00\x1a \n\x1eGetCurrentQuorumsInfoRequestV0B\t\n\x07version\"\xa1\x05\n\x1dGetCurrentQuorumsInfoResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.GetCurrentQuorumsInfoResponseV0H\x00\x1a\x46\n\x0bValidatorV0\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07node_ip\x18\x02 \x01(\t\x12\x11\n\tis_banned\x18\x03 \x01(\x08\x1a\xaf\x01\n\x0eValidatorSetV0\x12\x13\n\x0bquorum_hash\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ore_height\x18\x02 \x01(\r\x12U\n\x07members\x18\x03 \x03(\x0b\x32\x44.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorV0\x12\x1c\n\x14threshold_public_key\x18\x04 \x01(\x0c\x1a\x92\x02\n\x1fGetCurrentQuorumsInfoResponseV0\x12\x15\n\rquorum_hashes\x18\x01 \x03(\x0c\x12\x1b\n\x13\x63urrent_quorum_hash\x18\x02 \x01(\x0c\x12_\n\x0evalidator_sets\x18\x03 \x03(\x0b\x32G.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorSetV0\x12\x1b\n\x13last_block_proposer\x18\x04 \x01(\x0c\x12=\n\x08metadata\x18\x05 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\t\n\x07version\"\xf4\x01\n\x1fGetIdentityTokenBalancesRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest.GetIdentityTokenBalancesRequestV0H\x00\x1aZ\n!GetIdentityTokenBalancesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xad\x05\n GetIdentityTokenBalancesResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0H\x00\x1a\x8f\x04\n\"GetIdentityTokenBalancesResponseV0\x12\x86\x01\n\x0etoken_balances\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aG\n\x11TokenBalanceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x9a\x01\n\rTokenBalances\x12\x88\x01\n\x0etoken_balances\x18\x01 \x03(\x0b\x32p.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xfc\x01\n!GetIdentitiesTokenBalancesRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest.GetIdentitiesTokenBalancesRequestV0H\x00\x1a\\\n#GetIdentitiesTokenBalancesRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xf2\x05\n\"GetIdentitiesTokenBalancesResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0H\x00\x1a\xce\x04\n$GetIdentitiesTokenBalancesResponseV0\x12\x9b\x01\n\x17identity_token_balances\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aR\n\x19IdentityTokenBalanceEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\xb7\x01\n\x15IdentityTokenBalances\x12\x9d\x01\n\x17identity_token_balances\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xe8\x01\n\x1cGetIdentityTokenInfosRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest.GetIdentityTokenInfosRequestV0H\x00\x1aW\n\x1eGetIdentityTokenInfosRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\x98\x06\n\x1dGetIdentityTokenInfosResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0H\x00\x1a\x83\x05\n\x1fGetIdentityTokenInfosResponseV0\x12z\n\x0btoken_infos\x18\x01 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb0\x01\n\x0eTokenInfoEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x82\x01\n\x04info\x18\x02 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x8a\x01\n\nTokenInfos\x12|\n\x0btoken_infos\x18\x01 \x03(\x0b\x32g.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n\x1eGetIdentitiesTokenInfosRequest\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest.GetIdentitiesTokenInfosRequestV0H\x00\x1aY\n GetIdentitiesTokenInfosRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xca\x06\n\x1fGetIdentitiesTokenInfosResponse\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0H\x00\x1a\xaf\x05\n!GetIdentitiesTokenInfosResponseV0\x12\x8f\x01\n\x14identity_token_infos\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.IdentityTokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb7\x01\n\x0eTokenInfoEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x86\x01\n\x04info\x18\x02 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x97\x01\n\x12IdentityTokenInfos\x12\x80\x01\n\x0btoken_infos\x18\x01 \x03(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbf\x01\n\x17GetTokenStatusesRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetTokenStatusesRequest.GetTokenStatusesRequestV0H\x00\x1a=\n\x19GetTokenStatusesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xe7\x04\n\x18GetTokenStatusesResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0H\x00\x1a\xe1\x03\n\x1aGetTokenStatusesResponseV0\x12v\n\x0etoken_statuses\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x44\n\x10TokenStatusEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x13\n\x06paused\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_paused\x1a\x88\x01\n\rTokenStatuses\x12w\n\x0etoken_statuses\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusEntryB\x08\n\x06resultB\t\n\x07version\"\xef\x01\n#GetTokenDirectPurchasePricesRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest.GetTokenDirectPurchasePricesRequestV0H\x00\x1aI\n%GetTokenDirectPurchasePricesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x8b\t\n$GetTokenDirectPurchasePricesResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0H\x00\x1a\xe1\x07\n&GetTokenDirectPurchasePricesResponseV0\x12\xa9\x01\n\x1ctoken_direct_purchase_prices\x18\x01 \x01(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePricesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xa7\x01\n\x0fPricingSchedule\x12\x93\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PriceForQuantity\x1a\xe4\x01\n\x1dTokenDirectPurchasePriceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x15\n\x0b\x66ixed_price\x18\x02 \x01(\x04H\x00\x12\x90\x01\n\x0evariable_price\x18\x03 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PricingScheduleH\x00\x42\x07\n\x05price\x1a\xc8\x01\n\x19TokenDirectPurchasePrices\x12\xaa\x01\n\x1btoken_direct_purchase_price\x18\x01 \x03(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePriceEntryB\x08\n\x06resultB\t\n\x07version\"\xce\x01\n\x1bGetTokenContractInfoRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenContractInfoRequest.GetTokenContractInfoRequestV0H\x00\x1a@\n\x1dGetTokenContractInfoRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xfb\x03\n\x1cGetTokenContractInfoResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0H\x00\x1a\xe9\x02\n\x1eGetTokenContractInfoResponseV0\x12|\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0.TokenContractInfoDataH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aM\n\x15TokenContractInfoData\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xef\x04\n)GetTokenPreProgrammedDistributionsRequest\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0H\x00\x1a\xb6\x03\n+GetTokenPreProgrammedDistributionsRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x98\x01\n\rstart_at_info\x18\x02 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0.StartAtInfoH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x1a\x9a\x01\n\x0bStartAtInfo\x12\x15\n\rstart_time_ms\x18\x01 \x01(\x04\x12\x1c\n\x0fstart_recipient\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12%\n\x18start_recipient_included\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_start_recipientB\x1b\n\x19_start_recipient_includedB\x10\n\x0e_start_at_infoB\x08\n\x06_limitB\t\n\x07version\"\xec\x07\n*GetTokenPreProgrammedDistributionsResponse\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0H\x00\x1a\xaf\x06\n,GetTokenPreProgrammedDistributionsResponseV0\x12\xa5\x01\n\x13token_distributions\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a>\n\x16TokenDistributionEntry\x12\x14\n\x0crecipient_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x1a\xd4\x01\n\x1bTokenTimedDistributionEntry\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\xa1\x01\n\rdistributions\x18\x02 \x03(\x0b\x32\x89\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionEntry\x1a\xc3\x01\n\x12TokenDistributions\x12\xac\x01\n\x13token_distributions\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenTimedDistributionEntryB\x08\n\x06resultB\t\n\x07version\"\x82\x04\n-GetTokenPerpetualDistributionLastClaimRequest\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.GetTokenPerpetualDistributionLastClaimRequestV0H\x00\x1aI\n\x11\x43ontractTokenInfo\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\r\x1a\xf1\x01\n/GetTokenPerpetualDistributionLastClaimRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12v\n\rcontract_info\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.ContractTokenInfoH\x00\x88\x01\x01\x12\x13\n\x0bidentity_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x10\n\x0e_contract_infoB\t\n\x07version\"\x93\x05\n.GetTokenPerpetualDistributionLastClaimResponse\x12\x88\x01\n\x02v0\x18\x01 \x01(\x0b\x32z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0H\x00\x1a\xca\x03\n0GetTokenPerpetualDistributionLastClaimResponseV0\x12\x9f\x01\n\nlast_claim\x18\x01 \x01(\x0b\x32\x88\x01.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0.LastClaimInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\rLastClaimInfo\x12\x1a\n\x0ctimestamp_ms\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x1a\n\x0c\x62lock_height\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x12\x0f\n\x05\x65poch\x18\x03 \x01(\rH\x00\x12\x13\n\traw_bytes\x18\x04 \x01(\x0cH\x00\x42\t\n\x07paid_atB\x08\n\x06resultB\t\n\x07version\"\xca\x01\n\x1aGetTokenTotalSupplyRequest\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest.GetTokenTotalSupplyRequestV0H\x00\x1a?\n\x1cGetTokenTotalSupplyRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xaf\x04\n\x1bGetTokenTotalSupplyResponse\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0H\x00\x1a\xa0\x03\n\x1dGetTokenTotalSupplyResponseV0\x12\x88\x01\n\x12token_total_supply\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0.TokenTotalSupplyEntryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\x15TokenTotalSupplyEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x30\n(total_aggregated_amount_in_user_accounts\x18\x02 \x01(\x04\x12\x1b\n\x13total_system_amount\x18\x03 \x01(\x04\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x01\n\x13GetGroupInfoRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetGroupInfoRequest.GetGroupInfoRequestV0H\x00\x1a\\\n\x15GetGroupInfoRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xd4\x05\n\x14GetGroupInfoResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0H\x00\x1a\xda\x04\n\x16GetGroupInfoResponseV0\x12\x66\n\ngroup_info\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x98\x01\n\x0eGroupInfoEntry\x12h\n\x07members\x18\x01 \x03(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x02 \x01(\r\x1a\x8a\x01\n\tGroupInfo\x12n\n\ngroup_info\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoEntryH\x00\x88\x01\x01\x42\r\n\x0b_group_infoB\x08\n\x06resultB\t\n\x07version\"\xed\x03\n\x14GetGroupInfosRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfosRequest.GetGroupInfosRequestV0H\x00\x1au\n\x1cStartAtGroupContractPosition\x12%\n\x1dstart_group_contract_position\x18\x01 \x01(\r\x12.\n&start_group_contract_position_included\x18\x02 \x01(\x08\x1a\xfc\x01\n\x16GetGroupInfosRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12{\n start_at_group_contract_position\x18\x02 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupInfosRequest.StartAtGroupContractPositionH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x42#\n!_start_at_group_contract_positionB\x08\n\x06_countB\t\n\x07version\"\xff\x05\n\x15GetGroupInfosResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0H\x00\x1a\x82\x05\n\x17GetGroupInfosResponseV0\x12j\n\x0bgroup_infos\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\xc3\x01\n\x16GroupPositionInfoEntry\x12\x1f\n\x17group_contract_position\x18\x01 \x01(\r\x12j\n\x07members\x18\x02 \x03(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x03 \x01(\r\x1a\x82\x01\n\nGroupInfos\x12t\n\x0bgroup_infos\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupPositionInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbe\x04\n\x16GetGroupActionsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetGroupActionsRequest.GetGroupActionsRequestV0H\x00\x1aL\n\x0fStartAtActionId\x12\x17\n\x0fstart_action_id\x18\x01 \x01(\x0c\x12 \n\x18start_action_id_included\x18\x02 \x01(\x08\x1a\xc8\x02\n\x18GetGroupActionsRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12N\n\x06status\x18\x03 \x01(\x0e\x32>.org.dash.platform.dapi.v0.GetGroupActionsRequest.ActionStatus\x12\x62\n\x12start_at_action_id\x18\x04 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetGroupActionsRequest.StartAtActionIdH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x42\x15\n\x13_start_at_action_idB\x08\n\x06_count\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\xd6\x1e\n\x17GetGroupActionsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0H\x00\x1a\xd3\x1d\n\x19GetGroupActionsResponseV0\x12r\n\rgroup_actions\x18\x01 \x01(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a[\n\tMintEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0crecipient_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a[\n\tBurnEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0c\x62urn_from_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aJ\n\x0b\x46reezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aL\n\rUnfreezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x66\n\x17\x44\x65stroyFrozenFundsEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x13SharedEncryptedNote\x12\x18\n\x10sender_key_index\x18\x01 \x01(\r\x12\x1b\n\x13recipient_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a{\n\x15PersonalEncryptedNote\x12!\n\x19root_encryption_key_index\x18\x01 \x01(\r\x12\'\n\x1f\x64\x65rivation_encryption_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a\xe9\x01\n\x14\x45mergencyActionEvent\x12\x81\x01\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32l.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEvent.ActionType\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\"#\n\nActionType\x12\t\n\x05PAUSE\x10\x00\x12\n\n\x06RESUME\x10\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x16TokenConfigUpdateEvent\x12 \n\x18token_config_update_item\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\xe6\x03\n\x1eUpdateDirectPurchasePriceEvent\x12\x15\n\x0b\x66ixed_price\x18\x01 \x01(\x04H\x00\x12\x95\x01\n\x0evariable_price\x18\x02 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PricingScheduleH\x00\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x01\x88\x01\x01\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xac\x01\n\x0fPricingSchedule\x12\x98\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PriceForQuantityB\x07\n\x05priceB\x0e\n\x0c_public_note\x1a\xfc\x02\n\x10GroupActionEvent\x12n\n\x0btoken_event\x18\x01 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenEventH\x00\x12t\n\x0e\x64ocument_event\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentEventH\x00\x12t\n\x0e\x63ontract_event\x18\x03 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractEventH\x00\x42\x0c\n\nevent_type\x1a\x8b\x01\n\rDocumentEvent\x12r\n\x06\x63reate\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentCreateEventH\x00\x42\x06\n\x04type\x1a/\n\x13\x44ocumentCreateEvent\x12\x18\n\x10\x63reated_document\x18\x01 \x01(\x0c\x1a/\n\x13\x43ontractUpdateEvent\x12\x18\n\x10updated_contract\x18\x01 \x01(\x0c\x1a\x8b\x01\n\rContractEvent\x12r\n\x06update\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractUpdateEventH\x00\x42\x06\n\x04type\x1a\xd1\x07\n\nTokenEvent\x12\x66\n\x04mint\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.MintEventH\x00\x12\x66\n\x04\x62urn\x18\x02 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.BurnEventH\x00\x12j\n\x06\x66reeze\x18\x03 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.FreezeEventH\x00\x12n\n\x08unfreeze\x18\x04 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UnfreezeEventH\x00\x12\x84\x01\n\x14\x64\x65stroy_frozen_funds\x18\x05 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DestroyFrozenFundsEventH\x00\x12}\n\x10\x65mergency_action\x18\x06 \x01(\x0b\x32\x61.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEventH\x00\x12\x82\x01\n\x13token_config_update\x18\x07 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenConfigUpdateEventH\x00\x12\x83\x01\n\x0cupdate_price\x18\x08 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEventH\x00\x42\x06\n\x04type\x1a\x93\x01\n\x10GroupActionEntry\x12\x11\n\taction_id\x18\x01 \x01(\x0c\x12l\n\x05\x65vent\x18\x02 \x01(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEvent\x1a\x84\x01\n\x0cGroupActions\x12t\n\rgroup_actions\x18\x01 \x03(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEntryB\x08\n\x06resultB\t\n\x07version\"\x88\x03\n\x1cGetGroupActionSignersRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.GetGroupActionSignersRequestV0H\x00\x1a\xce\x01\n\x1eGetGroupActionSignersRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12T\n\x06status\x18\x03 \x01(\x0e\x32\x44.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.ActionStatus\x12\x11\n\taction_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\x8b\x05\n\x1dGetGroupActionSignersResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0H\x00\x1a\xf6\x03\n\x1fGetGroupActionSignersResponseV0\x12\x8b\x01\n\x14group_action_signers\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x35\n\x11GroupActionSigner\x12\x11\n\tsigner_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x91\x01\n\x12GroupActionSigners\x12{\n\x07signers\x18\x01 \x03(\x0b\x32j.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignerB\x08\n\x06resultB\t\n\x07version*Z\n\nKeyPurpose\x12\x12\n\x0e\x41UTHENTICATION\x10\x00\x12\x0e\n\nENCRYPTION\x10\x01\x12\x0e\n\nDECRYPTION\x10\x02\x12\x0c\n\x08TRANSFER\x10\x03\x12\n\n\x06VOTING\x10\x05\x32\xf4\x36\n\x08Platform\x12\x93\x01\n\x18\x62roadcastStateTransition\x12:.org.dash.platform.dapi.v0.BroadcastStateTransitionRequest\x1a;.org.dash.platform.dapi.v0.BroadcastStateTransitionResponse\x12l\n\x0bgetIdentity\x12-.org.dash.platform.dapi.v0.GetIdentityRequest\x1a..org.dash.platform.dapi.v0.GetIdentityResponse\x12x\n\x0fgetIdentityKeys\x12\x31.org.dash.platform.dapi.v0.GetIdentityKeysRequest\x1a\x32.org.dash.platform.dapi.v0.GetIdentityKeysResponse\x12\x96\x01\n\x19getIdentitiesContractKeys\x12;.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest\x1a<.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse\x12{\n\x10getIdentityNonce\x12\x32.org.dash.platform.dapi.v0.GetIdentityNonceRequest\x1a\x33.org.dash.platform.dapi.v0.GetIdentityNonceResponse\x12\x93\x01\n\x18getIdentityContractNonce\x12:.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse\x12\x81\x01\n\x12getIdentityBalance\x12\x34.org.dash.platform.dapi.v0.GetIdentityBalanceRequest\x1a\x35.org.dash.platform.dapi.v0.GetIdentityBalanceResponse\x12\x8a\x01\n\x15getIdentitiesBalances\x12\x37.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse\x12\xa2\x01\n\x1dgetIdentityBalanceAndRevision\x12?.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest\x1a@.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse\x12\xaf\x01\n#getEvonodesProposedEpochBlocksByIds\x12\x45.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12\xb3\x01\n%getEvonodesProposedEpochBlocksByRange\x12G.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12x\n\x0fgetDataContract\x12\x31.org.dash.platform.dapi.v0.GetDataContractRequest\x1a\x32.org.dash.platform.dapi.v0.GetDataContractResponse\x12\x8d\x01\n\x16getDataContractHistory\x12\x38.org.dash.platform.dapi.v0.GetDataContractHistoryRequest\x1a\x39.org.dash.platform.dapi.v0.GetDataContractHistoryResponse\x12{\n\x10getDataContracts\x12\x32.org.dash.platform.dapi.v0.GetDataContractsRequest\x1a\x33.org.dash.platform.dapi.v0.GetDataContractsResponse\x12o\n\x0cgetDocuments\x12..org.dash.platform.dapi.v0.GetDocumentsRequest\x1a/.org.dash.platform.dapi.v0.GetDocumentsResponse\x12\x99\x01\n\x1agetIdentityByPublicKeyHash\x12<.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest\x1a=.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse\x12\xb4\x01\n#getIdentityByNonUniquePublicKeyHash\x12\x45.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest\x1a\x46.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse\x12\x9f\x01\n\x1cwaitForStateTransitionResult\x12>.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest\x1a?.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse\x12\x81\x01\n\x12getConsensusParams\x12\x34.org.dash.platform.dapi.v0.GetConsensusParamsRequest\x1a\x35.org.dash.platform.dapi.v0.GetConsensusParamsResponse\x12\xa5\x01\n\x1egetProtocolVersionUpgradeState\x12@.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest\x1a\x41.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse\x12\xb4\x01\n#getProtocolVersionUpgradeVoteStatus\x12\x45.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest\x1a\x46.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse\x12r\n\rgetEpochsInfo\x12/.org.dash.platform.dapi.v0.GetEpochsInfoRequest\x1a\x30.org.dash.platform.dapi.v0.GetEpochsInfoResponse\x12\x8d\x01\n\x16getFinalizedEpochInfos\x12\x38.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest\x1a\x39.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse\x12\x8a\x01\n\x15getContestedResources\x12\x37.org.dash.platform.dapi.v0.GetContestedResourcesRequest\x1a\x38.org.dash.platform.dapi.v0.GetContestedResourcesResponse\x12\xa2\x01\n\x1dgetContestedResourceVoteState\x12?.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest\x1a@.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse\x12\xba\x01\n%getContestedResourceVotersForIdentity\x12G.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest\x1aH.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse\x12\xae\x01\n!getContestedResourceIdentityVotes\x12\x43.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest\x1a\x44.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse\x12\x8a\x01\n\x15getVotePollsByEndDate\x12\x37.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest\x1a\x38.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse\x12\xa5\x01\n\x1egetPrefundedSpecializedBalance\x12@.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest\x1a\x41.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse\x12\x96\x01\n\x19getTotalCreditsInPlatform\x12;.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest\x1a<.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse\x12x\n\x0fgetPathElements\x12\x31.org.dash.platform.dapi.v0.GetPathElementsRequest\x1a\x32.org.dash.platform.dapi.v0.GetPathElementsResponse\x12\x66\n\tgetStatus\x12+.org.dash.platform.dapi.v0.GetStatusRequest\x1a,.org.dash.platform.dapi.v0.GetStatusResponse\x12\x8a\x01\n\x15getCurrentQuorumsInfo\x12\x37.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest\x1a\x38.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse\x12\x93\x01\n\x18getIdentityTokenBalances\x12:.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse\x12\x99\x01\n\x1agetIdentitiesTokenBalances\x12<.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest\x1a=.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse\x12\x8a\x01\n\x15getIdentityTokenInfos\x12\x37.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse\x12\x90\x01\n\x17getIdentitiesTokenInfos\x12\x39.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest\x1a:.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse\x12{\n\x10getTokenStatuses\x12\x32.org.dash.platform.dapi.v0.GetTokenStatusesRequest\x1a\x33.org.dash.platform.dapi.v0.GetTokenStatusesResponse\x12\x9f\x01\n\x1cgetTokenDirectPurchasePrices\x12>.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest\x1a?.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse\x12\x87\x01\n\x14getTokenContractInfo\x12\x36.org.dash.platform.dapi.v0.GetTokenContractInfoRequest\x1a\x37.org.dash.platform.dapi.v0.GetTokenContractInfoResponse\x12\xb1\x01\n\"getTokenPreProgrammedDistributions\x12\x44.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest\x1a\x45.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse\x12\xbd\x01\n&getTokenPerpetualDistributionLastClaim\x12H.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest\x1aI.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse\x12\x84\x01\n\x13getTokenTotalSupply\x12\x35.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest\x1a\x36.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse\x12o\n\x0cgetGroupInfo\x12..org.dash.platform.dapi.v0.GetGroupInfoRequest\x1a/.org.dash.platform.dapi.v0.GetGroupInfoResponse\x12r\n\rgetGroupInfos\x12/.org.dash.platform.dapi.v0.GetGroupInfosRequest\x1a\x30.org.dash.platform.dapi.v0.GetGroupInfosResponse\x12x\n\x0fgetGroupActions\x12\x31.org.dash.platform.dapi.v0.GetGroupActionsRequest\x1a\x32.org.dash.platform.dapi.v0.GetGroupActionsResponse\x12\x8a\x01\n\x15getGroupActionSigners\x12\x37.org.dash.platform.dapi.v0.GetGroupActionSignersRequest\x1a\x38.org.dash.platform.dapi.v0.GetGroupActionSignersResponse\x12\x8c\x01\n\x17SubscribePlatformEvents\x12\x36.org.dash.platform.dapi.v0.PlatformSubscriptionRequest\x1a\x37.org.dash.platform.dapi.v0.PlatformSubscriptionResponse0\x01\x62\x06proto3' + serialized_pb=b'\n\x0eplatform.proto\x12\x19org.dash.platform.dapi.v0\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xfd\x01\n\x1bPlatformSubscriptionRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0H\x00\x1ao\n\x1dPlatformSubscriptionRequestV0\x12;\n\x06\x66ilter\x18\x01 \x01(\x0b\x32+.org.dash.platform.dapi.v0.PlatformFilterV0\x12\x11\n\tkeepalive\x18\x02 \x01(\rB\t\n\x07version\"\x8c\x02\n\x1cPlatformSubscriptionResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0H\x00\x1a{\n\x1ePlatformSubscriptionResponseV0\x12\x1e\n\x16\x63lient_subscription_id\x18\x01 \x01(\t\x12\x39\n\x05\x65vent\x18\x02 \x01(\x0b\x32*.org.dash.platform.dapi.v0.PlatformEventV0B\t\n\x07version\"?\n\x1bStateTransitionResultFilter\x12\x14\n\x07tx_hash\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\n\n\x08_tx_hash\"\x9f\x01\n\x10PlatformFilterV0\x12\r\n\x03\x61ll\x18\x01 \x01(\x08H\x00\x12\x19\n\x0f\x62lock_committed\x18\x02 \x01(\x08H\x00\x12Y\n\x17state_transition_result\x18\x03 \x01(\x0b\x32\x36.org.dash.platform.dapi.v0.StateTransitionResultFilterH\x00\x42\x06\n\x04kind\"\xe5\x04\n\x0fPlatformEventV0\x12T\n\x0f\x62lock_committed\x18\x01 \x01(\x0b\x32\x39.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommittedH\x00\x12i\n\x1astate_transition_finalized\x18\x02 \x01(\x0b\x32\x43.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalizedH\x00\x12I\n\tkeepalive\x18\x03 \x01(\x0b\x32\x34.org.dash.platform.dapi.v0.PlatformEventV0.KeepaliveH\x00\x1aO\n\rBlockMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x13\n\x07time_ms\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rblock_id_hash\x18\x03 \x01(\x0c\x1aj\n\x0e\x42lockCommitted\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x10\n\x08tx_count\x18\x02 \x01(\r\x1as\n\x18StateTransitionFinalized\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x0f\n\x07tx_hash\x18\x02 \x01(\x0c\x1a\x0b\n\tKeepaliveB\x07\n\x05\x65vent\"\x81\x01\n\x05Proof\x12\x15\n\rgrovedb_proof\x18\x01 \x01(\x0c\x12\x13\n\x0bquorum_hash\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\r\n\x05round\x18\x04 \x01(\r\x12\x15\n\rblock_id_hash\x18\x05 \x01(\x0c\x12\x13\n\x0bquorum_type\x18\x06 \x01(\r\"\x98\x01\n\x10ResponseMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12 \n\x18\x63ore_chain_locked_height\x18\x02 \x01(\r\x12\r\n\x05\x65poch\x18\x03 \x01(\r\x12\x13\n\x07time_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x18\n\x10protocol_version\x18\x05 \x01(\r\x12\x10\n\x08\x63hain_id\x18\x06 \x01(\t\"L\n\x1dStateTransitionBroadcastError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\";\n\x1f\x42roadcastStateTransitionRequest\x12\x18\n\x10state_transition\x18\x01 \x01(\x0c\"\"\n BroadcastStateTransitionResponse\"\xa4\x01\n\x12GetIdentityRequest\x12P\n\x02v0\x18\x01 \x01(\x0b\x32\x42.org.dash.platform.dapi.v0.GetIdentityRequest.GetIdentityRequestV0H\x00\x1a\x31\n\x14GetIdentityRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xc1\x01\n\x17GetIdentityNonceRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityNonceRequest.GetIdentityNonceRequestV0H\x00\x1a?\n\x19GetIdentityNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xf6\x01\n\x1fGetIdentityContractNonceRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest.GetIdentityContractNonceRequestV0H\x00\x1a\\\n!GetIdentityContractNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xc0\x01\n\x19GetIdentityBalanceRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetIdentityBalanceRequest.GetIdentityBalanceRequestV0H\x00\x1a\x38\n\x1bGetIdentityBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xec\x01\n$GetIdentityBalanceAndRevisionRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest.GetIdentityBalanceAndRevisionRequestV0H\x00\x1a\x43\n&GetIdentityBalanceAndRevisionRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9e\x02\n\x13GetIdentityResponse\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetIdentityResponse.GetIdentityResponseV0H\x00\x1a\xa7\x01\n\x15GetIdentityResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbc\x02\n\x18GetIdentityNonceResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetIdentityNonceResponse.GetIdentityNonceResponseV0H\x00\x1a\xb6\x01\n\x1aGetIdentityNonceResponseV0\x12\x1c\n\x0eidentity_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xe5\x02\n GetIdentityContractNonceResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse.GetIdentityContractNonceResponseV0H\x00\x1a\xc7\x01\n\"GetIdentityContractNonceResponseV0\x12%\n\x17identity_contract_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n\x1aGetIdentityBalanceResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetIdentityBalanceResponse.GetIdentityBalanceResponseV0H\x00\x1a\xb1\x01\n\x1cGetIdentityBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb1\x04\n%GetIdentityBalanceAndRevisionResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0H\x00\x1a\x84\x03\n\'GetIdentityBalanceAndRevisionResponseV0\x12\x9b\x01\n\x14\x62\x61lance_and_revision\x18\x01 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0.BalanceAndRevisionH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x12\x42\x61lanceAndRevision\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x14\n\x08revision\x18\x02 \x01(\x04\x42\x02\x30\x01\x42\x08\n\x06resultB\t\n\x07version\"\xd1\x01\n\x0eKeyRequestType\x12\x36\n\x08\x61ll_keys\x18\x01 \x01(\x0b\x32\".org.dash.platform.dapi.v0.AllKeysH\x00\x12@\n\rspecific_keys\x18\x02 \x01(\x0b\x32\'.org.dash.platform.dapi.v0.SpecificKeysH\x00\x12:\n\nsearch_key\x18\x03 \x01(\x0b\x32$.org.dash.platform.dapi.v0.SearchKeyH\x00\x42\t\n\x07request\"\t\n\x07\x41llKeys\"\x1f\n\x0cSpecificKeys\x12\x0f\n\x07key_ids\x18\x01 \x03(\r\"\xb6\x01\n\tSearchKey\x12I\n\x0bpurpose_map\x18\x01 \x03(\x0b\x32\x34.org.dash.platform.dapi.v0.SearchKey.PurposeMapEntry\x1a^\n\x0fPurposeMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.org.dash.platform.dapi.v0.SecurityLevelMap:\x02\x38\x01\"\xbf\x02\n\x10SecurityLevelMap\x12]\n\x12security_level_map\x18\x01 \x03(\x0b\x32\x41.org.dash.platform.dapi.v0.SecurityLevelMap.SecurityLevelMapEntry\x1aw\n\x15SecurityLevelMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12M\n\x05value\x18\x02 \x01(\x0e\x32>.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType:\x02\x38\x01\"S\n\x12KeyKindRequestType\x12\x1f\n\x1b\x43URRENT_KEY_OF_KIND_REQUEST\x10\x00\x12\x1c\n\x18\x41LL_KEYS_OF_KIND_REQUEST\x10\x01\"\xda\x02\n\x16GetIdentityKeysRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetIdentityKeysRequest.GetIdentityKeysRequestV0H\x00\x1a\xda\x01\n\x18GetIdentityKeysRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12?\n\x0crequest_type\x18\x02 \x01(\x0b\x32).org.dash.platform.dapi.v0.KeyRequestType\x12+\n\x05limit\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\x99\x03\n\x17GetIdentityKeysResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0H\x00\x1a\x96\x02\n\x19GetIdentityKeysResponseV0\x12\x61\n\x04keys\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0.KeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1a\n\x04Keys\x12\x12\n\nkeys_bytes\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xef\x02\n GetIdentitiesContractKeysRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest.GetIdentitiesContractKeysRequestV0H\x00\x1a\xd1\x01\n\"GetIdentitiesContractKeysRequestV0\x12\x16\n\x0eidentities_ids\x18\x01 \x03(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\x1f\n\x12\x64ocument_type_name\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x08purposes\x18\x04 \x03(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x15\n\x13_document_type_nameB\t\n\x07version\"\xdf\x06\n!GetIdentitiesContractKeysResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0H\x00\x1a\xbe\x05\n#GetIdentitiesContractKeysResponseV0\x12\x8a\x01\n\x0fidentities_keys\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentitiesKeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aY\n\x0bPurposeKeys\x12\x36\n\x07purpose\x18\x01 \x01(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\x12\n\nkeys_bytes\x18\x02 \x03(\x0c\x1a\x9f\x01\n\x0cIdentityKeys\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12z\n\x04keys\x18\x02 \x03(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.PurposeKeys\x1a\x90\x01\n\x0eIdentitiesKeys\x12~\n\x07\x65ntries\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentityKeysB\x08\n\x06resultB\t\n\x07version\"\xa4\x02\n*GetEvonodesProposedEpochBlocksByIdsRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest.GetEvonodesProposedEpochBlocksByIdsRequestV0H\x00\x1ah\n,GetEvonodesProposedEpochBlocksByIdsRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0b\n\x03ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x08\n\x06_epochB\t\n\x07version\"\x92\x06\n&GetEvonodesProposedEpochBlocksResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0H\x00\x1a\xe2\x04\n(GetEvonodesProposedEpochBlocksResponseV0\x12\xb1\x01\n#evonodes_proposed_block_counts_info\x18\x01 \x01(\x0b\x32\x81\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodesProposedBlocksH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x15\x45vonodeProposedBlocks\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x11\n\x05\x63ount\x18\x02 \x01(\x04\x42\x02\x30\x01\x1a\xc4\x01\n\x16\x45vonodesProposedBlocks\x12\xa9\x01\n\x1e\x65vonodes_proposed_block_counts\x18\x01 \x03(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodeProposedBlocksB\x08\n\x06resultB\t\n\x07version\"\xf2\x02\n,GetEvonodesProposedEpochBlocksByRangeRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest.GetEvonodesProposedEpochBlocksByRangeRequestV0H\x00\x1a\xaf\x01\n.GetEvonodesProposedEpochBlocksByRangeRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x02 \x01(\rH\x02\x88\x01\x01\x12\x15\n\x0bstart_after\x18\x03 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x04 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x07\n\x05startB\x08\n\x06_epochB\x08\n\x06_limitB\t\n\x07version\"\xcd\x01\n\x1cGetIdentitiesBalancesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest.GetIdentitiesBalancesRequestV0H\x00\x1a<\n\x1eGetIdentitiesBalancesRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9f\x05\n\x1dGetIdentitiesBalancesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0H\x00\x1a\x8a\x04\n\x1fGetIdentitiesBalancesResponseV0\x12\x8a\x01\n\x13identities_balances\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentitiesBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aL\n\x0fIdentityBalance\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x8f\x01\n\x12IdentitiesBalances\x12y\n\x07\x65ntries\x18\x01 \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentityBalanceB\x08\n\x06resultB\t\n\x07version\"\xb4\x01\n\x16GetDataContractRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetDataContractRequest.GetDataContractRequestV0H\x00\x1a\x35\n\x18GetDataContractRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xb3\x02\n\x17GetDataContractResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractResponse.GetDataContractResponseV0H\x00\x1a\xb0\x01\n\x19GetDataContractResponseV0\x12\x17\n\rdata_contract\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb9\x01\n\x17GetDataContractsRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractsRequest.GetDataContractsRequestV0H\x00\x1a\x37\n\x19GetDataContractsRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xcf\x04\n\x18GetDataContractsResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetDataContractsResponse.GetDataContractsResponseV0H\x00\x1a[\n\x11\x44\x61taContractEntry\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x32\n\rdata_contract\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x1au\n\rDataContracts\x12\x64\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32\x45.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractEntry\x1a\xf5\x01\n\x1aGetDataContractsResponseV0\x12[\n\x0e\x64\x61ta_contracts\x18\x01 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc5\x02\n\x1dGetDataContractHistoryRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetDataContractHistoryRequest.GetDataContractHistoryRequestV0H\x00\x1a\xb0\x01\n\x1fGetDataContractHistoryRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0bstart_at_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xb2\x05\n\x1eGetDataContractHistoryResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0H\x00\x1a\x9a\x04\n GetDataContractHistoryResponseV0\x12\x8f\x01\n\x15\x64\x61ta_contract_history\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a;\n\x18\x44\x61taContractHistoryEntry\x12\x10\n\x04\x64\x61te\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05value\x18\x02 \x01(\x0c\x1a\xaa\x01\n\x13\x44\x61taContractHistory\x12\x92\x01\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32s.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryEntryB\x08\n\x06resultB\t\n\x07version\"\xb2\x02\n\x13GetDocumentsRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetDocumentsRequest.GetDocumentsRequestV0H\x00\x1a\xbb\x01\n\x15GetDocumentsRequestV0\x12\x18\n\x10\x64\x61ta_contract_id\x18\x01 \x01(\x0c\x12\x15\n\rdocument_type\x18\x02 \x01(\t\x12\r\n\x05where\x18\x03 \x01(\x0c\x12\x10\n\x08order_by\x18\x04 \x01(\x0c\x12\r\n\x05limit\x18\x05 \x01(\r\x12\x15\n\x0bstart_after\x18\x06 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x07 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x08 \x01(\x08\x42\x07\n\x05startB\t\n\x07version\"\x95\x03\n\x14GetDocumentsResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0H\x00\x1a\x9b\x02\n\x16GetDocumentsResponseV0\x12\x65\n\tdocuments\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0.DocumentsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1e\n\tDocuments\x12\x11\n\tdocuments\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xed\x01\n!GetIdentityByPublicKeyHashRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest.GetIdentityByPublicKeyHashRequestV0H\x00\x1aM\n#GetIdentityByPublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xda\x02\n\"GetIdentityByPublicKeyHashResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse.GetIdentityByPublicKeyHashResponseV0H\x00\x1a\xb6\x01\n$GetIdentityByPublicKeyHashResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n*GetIdentityByNonUniquePublicKeyHashRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest.GetIdentityByNonUniquePublicKeyHashRequestV0H\x00\x1a\x80\x01\n,GetIdentityByNonUniquePublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\x18\n\x0bstart_after\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x0e\n\x0c_start_afterB\t\n\x07version\"\xd6\x06\n+GetIdentityByNonUniquePublicKeyHashResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0H\x00\x1a\x96\x05\n-GetIdentityByNonUniquePublicKeyHashResponseV0\x12\x9a\x01\n\x08identity\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityResponseH\x00\x12\x9d\x01\n\x05proof\x18\x02 \x01(\x0b\x32\x8b\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityProvedResponseH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x36\n\x10IdentityResponse\x12\x15\n\x08identity\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x0b\n\t_identity\x1a\xa6\x01\n\x16IdentityProvedResponse\x12P\n&grovedb_identity_public_key_hash_proof\x18\x01 \x01(\x0b\x32 .org.dash.platform.dapi.v0.Proof\x12!\n\x14identity_proof_bytes\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x17\n\x15_identity_proof_bytesB\x08\n\x06resultB\t\n\x07version\"\xfb\x01\n#WaitForStateTransitionResultRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0H\x00\x1aU\n%WaitForStateTransitionResultRequestV0\x12\x1d\n\x15state_transition_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x99\x03\n$WaitForStateTransitionResultResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0H\x00\x1a\xef\x01\n&WaitForStateTransitionResultResponseV0\x12I\n\x05\x65rror\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.StateTransitionBroadcastErrorH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x19GetConsensusParamsRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetConsensusParamsRequest.GetConsensusParamsRequestV0H\x00\x1a<\n\x1bGetConsensusParamsRequestV0\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9c\x04\n\x1aGetConsensusParamsResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetConsensusParamsResponse.GetConsensusParamsResponseV0H\x00\x1aP\n\x14\x43onsensusParamsBlock\x12\x11\n\tmax_bytes\x18\x01 \x01(\t\x12\x0f\n\x07max_gas\x18\x02 \x01(\t\x12\x14\n\x0ctime_iota_ms\x18\x03 \x01(\t\x1a\x62\n\x17\x43onsensusParamsEvidence\x12\x1a\n\x12max_age_num_blocks\x18\x01 \x01(\t\x12\x18\n\x10max_age_duration\x18\x02 \x01(\t\x12\x11\n\tmax_bytes\x18\x03 \x01(\t\x1a\xda\x01\n\x1cGetConsensusParamsResponseV0\x12Y\n\x05\x62lock\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsBlock\x12_\n\x08\x65vidence\x18\x02 \x01(\x0b\x32M.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsEvidenceB\t\n\x07version\"\xe4\x01\n%GetProtocolVersionUpgradeStateRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest.GetProtocolVersionUpgradeStateRequestV0H\x00\x1a\x38\n\'GetProtocolVersionUpgradeStateRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xb5\x05\n&GetProtocolVersionUpgradeStateResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0H\x00\x1a\x85\x04\n(GetProtocolVersionUpgradeStateResponseV0\x12\x87\x01\n\x08versions\x18\x01 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x96\x01\n\x08Versions\x12\x89\x01\n\x08versions\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionEntry\x1a:\n\x0cVersionEntry\x12\x16\n\x0eversion_number\x18\x01 \x01(\r\x12\x12\n\nvote_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xa3\x02\n*GetProtocolVersionUpgradeVoteStatusRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest.GetProtocolVersionUpgradeVoteStatusRequestV0H\x00\x1ag\n,GetProtocolVersionUpgradeVoteStatusRequestV0\x12\x19\n\x11start_pro_tx_hash\x18\x01 \x01(\x0c\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xef\x05\n+GetProtocolVersionUpgradeVoteStatusResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0H\x00\x1a\xaf\x04\n-GetProtocolVersionUpgradeVoteStatusResponseV0\x12\x98\x01\n\x08versions\x18\x01 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignalsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xaf\x01\n\x0eVersionSignals\x12\x9c\x01\n\x0fversion_signals\x18\x01 \x03(\x0b\x32\x82\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignal\x1a\x35\n\rVersionSignal\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07version\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xf5\x01\n\x14GetEpochsInfoRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetEpochsInfoRequest.GetEpochsInfoRequestV0H\x00\x1a|\n\x16GetEpochsInfoRequestV0\x12\x31\n\x0bstart_epoch\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\x11\n\tascending\x18\x03 \x01(\x08\x12\r\n\x05prove\x18\x04 \x01(\x08\x42\t\n\x07version\"\x99\x05\n\x15GetEpochsInfoResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0H\x00\x1a\x9c\x04\n\x17GetEpochsInfoResponseV0\x12\x65\n\x06\x65pochs\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1au\n\nEpochInfos\x12g\n\x0b\x65poch_infos\x18\x01 \x03(\x0b\x32R.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfo\x1a\xa6\x01\n\tEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x16\n\nstart_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xbf\x02\n\x1dGetFinalizedEpochInfosRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest.GetFinalizedEpochInfosRequestV0H\x00\x1a\xaa\x01\n\x1fGetFinalizedEpochInfosRequestV0\x12\x19\n\x11start_epoch_index\x18\x01 \x01(\r\x12\"\n\x1astart_epoch_index_included\x18\x02 \x01(\x08\x12\x17\n\x0f\x65nd_epoch_index\x18\x03 \x01(\r\x12 \n\x18\x65nd_epoch_index_included\x18\x04 \x01(\x08\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xbd\t\n\x1eGetFinalizedEpochInfosResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0H\x00\x1a\xa5\x08\n GetFinalizedEpochInfosResponseV0\x12\x80\x01\n\x06\x65pochs\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xa4\x01\n\x13\x46inalizedEpochInfos\x12\x8c\x01\n\x15\x66inalized_epoch_infos\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfo\x1a\x9f\x04\n\x12\x46inalizedEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x1c\n\x10\x66irst_block_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\r\x12!\n\x15total_blocks_in_epoch\x18\x07 \x01(\x04\x42\x02\x30\x01\x12*\n\"next_epoch_start_core_block_height\x18\x08 \x01(\r\x12!\n\x15total_processing_fees\x18\t \x01(\x04\x42\x02\x30\x01\x12*\n\x1etotal_distributed_storage_fees\x18\n \x01(\x04\x42\x02\x30\x01\x12&\n\x1atotal_created_storage_fees\x18\x0b \x01(\x04\x42\x02\x30\x01\x12\x1e\n\x12\x63ore_block_rewards\x18\x0c \x01(\x04\x42\x02\x30\x01\x12\x81\x01\n\x0f\x62lock_proposers\x18\r \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.BlockProposer\x1a\x39\n\rBlockProposer\x12\x13\n\x0bproposer_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x62lock_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xde\x04\n\x1cGetContestedResourcesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0H\x00\x1a\xcc\x03\n\x1eGetContestedResourcesRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x1a\n\x12start_index_values\x18\x04 \x03(\x0c\x12\x18\n\x10\x65nd_index_values\x18\x05 \x03(\x0c\x12\x89\x01\n\x13start_at_value_info\x18\x06 \x01(\x0b\x32g.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0.StartAtValueInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1a\x45\n\x10StartAtValueInfo\x12\x13\n\x0bstart_value\x18\x01 \x01(\x0c\x12\x1c\n\x14start_value_included\x18\x02 \x01(\x08\x42\x16\n\x14_start_at_value_infoB\x08\n\x06_countB\t\n\x07version\"\x88\x04\n\x1dGetContestedResourcesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0H\x00\x1a\xf3\x02\n\x1fGetContestedResourcesResponseV0\x12\x95\x01\n\x19\x63ontested_resource_values\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0.ContestedResourceValuesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a<\n\x17\x43ontestedResourceValues\x12!\n\x19\x63ontested_resource_values\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x05\n\x1cGetVotePollsByEndDateRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0H\x00\x1a\xc0\x04\n\x1eGetVotePollsByEndDateRequestV0\x12\x84\x01\n\x0fstart_time_info\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.StartAtTimeInfoH\x00\x88\x01\x01\x12\x80\x01\n\rend_time_info\x18\x02 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.EndAtTimeInfoH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x11\n\tascending\x18\x05 \x01(\x08\x12\r\n\x05prove\x18\x06 \x01(\x08\x1aI\n\x0fStartAtTimeInfo\x12\x19\n\rstart_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13start_time_included\x18\x02 \x01(\x08\x1a\x43\n\rEndAtTimeInfo\x12\x17\n\x0b\x65nd_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x65nd_time_included\x18\x02 \x01(\x08\x42\x12\n\x10_start_time_infoB\x10\n\x0e_end_time_infoB\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07version\"\x83\x06\n\x1dGetVotePollsByEndDateResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0H\x00\x1a\xee\x04\n\x1fGetVotePollsByEndDateResponseV0\x12\x9c\x01\n\x18vote_polls_by_timestamps\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestampsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aV\n\x1eSerializedVotePollsByTimestamp\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x15serialized_vote_polls\x18\x02 \x03(\x0c\x1a\xd7\x01\n\x1fSerializedVotePollsByTimestamps\x12\x99\x01\n\x18vote_polls_by_timestamps\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestamp\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xff\x06\n$GetContestedResourceVoteStateRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0H\x00\x1a\xd5\x05\n&GetContestedResourceVoteStateRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x86\x01\n\x0bresult_type\x18\x05 \x01(\x0e\x32q.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.ResultType\x12\x36\n.allow_include_locked_and_abstaining_vote_tally\x18\x06 \x01(\x08\x12\xa3\x01\n\x18start_at_identifier_info\x18\x07 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x08 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\"I\n\nResultType\x12\r\n\tDOCUMENTS\x10\x00\x12\x0e\n\nVOTE_TALLY\x10\x01\x12\x1c\n\x18\x44OCUMENTS_AND_VOTE_TALLY\x10\x02\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\x94\x0c\n%GetContestedResourceVoteStateResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0H\x00\x1a\xe7\n\n\'GetContestedResourceVoteStateResponseV0\x12\xae\x01\n\x1d\x63ontested_resource_contenders\x18\x01 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.ContestedResourceContendersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xda\x03\n\x10\x46inishedVoteInfo\x12\xad\x01\n\x15\x66inished_vote_outcome\x18\x01 \x01(\x0e\x32\x8d\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfo.FinishedVoteOutcome\x12\x1f\n\x12won_by_identity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12$\n\x18\x66inished_at_block_height\x18\x03 \x01(\x04\x42\x02\x30\x01\x12%\n\x1d\x66inished_at_core_block_height\x18\x04 \x01(\r\x12%\n\x19\x66inished_at_block_time_ms\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x66inished_at_epoch\x18\x06 \x01(\r\"O\n\x13\x46inishedVoteOutcome\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\n\n\x06LOCKED\x10\x01\x12\x16\n\x12NO_PREVIOUS_WINNER\x10\x02\x42\x15\n\x13_won_by_identity_id\x1a\xc4\x03\n\x1b\x43ontestedResourceContenders\x12\x86\x01\n\ncontenders\x18\x01 \x03(\x0b\x32r.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.Contender\x12\x1f\n\x12\x61\x62stain_vote_tally\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0flock_vote_tally\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x9a\x01\n\x12\x66inished_vote_info\x18\x04 \x01(\x0b\x32y.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfoH\x02\x88\x01\x01\x42\x15\n\x13_abstain_vote_tallyB\x12\n\x10_lock_vote_tallyB\x15\n\x13_finished_vote_info\x1ak\n\tContender\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x17\n\nvote_count\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08\x64ocument\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x42\r\n\x0b_vote_countB\x0b\n\t_documentB\x08\n\x06resultB\t\n\x07version\"\xd5\x05\n,GetContestedResourceVotersForIdentityRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0H\x00\x1a\x92\x04\n.GetContestedResourceVotersForIdentityRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x15\n\rcontestant_id\x18\x05 \x01(\x0c\x12\xb4\x01\n\x18start_at_identifier_info\x18\x06 \x01(\x0b\x32\x8c\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\xf1\x04\n-GetContestedResourceVotersForIdentityResponse\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0H\x00\x1a\xab\x03\n/GetContestedResourceVotersForIdentityResponseV0\x12\xb6\x01\n\x19\x63ontested_resource_voters\x18\x01 \x01(\x0b\x32\x90\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0.ContestedResourceVotersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x43\n\x17\x43ontestedResourceVoters\x12\x0e\n\x06voters\x18\x01 \x03(\x0c\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xad\x05\n(GetContestedResourceIdentityVotesRequest\x12|\n\x02v0\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0H\x00\x1a\xf7\x03\n*GetContestedResourceIdentityVotesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0forder_ascending\x18\x04 \x01(\x08\x12\xae\x01\n\x1astart_at_vote_poll_id_info\x18\x05 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0.StartAtVotePollIdInfoH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x1a\x61\n\x15StartAtVotePollIdInfo\x12 \n\x18start_at_poll_identifier\x18\x01 \x01(\x0c\x12&\n\x1estart_poll_identifier_included\x18\x02 \x01(\x08\x42\x1d\n\x1b_start_at_vote_poll_id_infoB\t\n\x07version\"\xc8\n\n)GetContestedResourceIdentityVotesResponse\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0H\x00\x1a\x8f\t\n+GetContestedResourceIdentityVotesResponseV0\x12\xa1\x01\n\x05votes\x18\x01 \x01(\x0b\x32\x8f\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVotesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xf7\x01\n\x1e\x43ontestedResourceIdentityVotes\x12\xba\x01\n!contested_resource_identity_votes\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVote\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x1a\xad\x02\n\x12ResourceVoteChoice\x12\xad\x01\n\x10vote_choice_type\x18\x01 \x01(\x0e\x32\x92\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoice.VoteChoiceType\x12\x18\n\x0bidentity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\"=\n\x0eVoteChoiceType\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\x0b\n\x07\x41\x42STAIN\x10\x01\x12\x08\n\x04LOCK\x10\x02\x42\x0e\n\x0c_identity_id\x1a\x95\x02\n\x1d\x43ontestedResourceIdentityVote\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\'\n\x1fserialized_index_storage_values\x18\x03 \x03(\x0c\x12\x99\x01\n\x0bvote_choice\x18\x04 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoiceB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n%GetPrefundedSpecializedBalanceRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest.GetPrefundedSpecializedBalanceRequestV0H\x00\x1a\x44\n\'GetPrefundedSpecializedBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xed\x02\n&GetPrefundedSpecializedBalanceResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse.GetPrefundedSpecializedBalanceResponseV0H\x00\x1a\xbd\x01\n(GetPrefundedSpecializedBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xd0\x01\n GetTotalCreditsInPlatformRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest.GetTotalCreditsInPlatformRequestV0H\x00\x1a\x33\n\"GetTotalCreditsInPlatformRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xd9\x02\n!GetTotalCreditsInPlatformResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse.GetTotalCreditsInPlatformResponseV0H\x00\x1a\xb8\x01\n#GetTotalCreditsInPlatformResponseV0\x12\x15\n\x07\x63redits\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x16GetPathElementsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetPathElementsRequest.GetPathElementsRequestV0H\x00\x1a\x45\n\x18GetPathElementsRequestV0\x12\x0c\n\x04path\x18\x01 \x03(\x0c\x12\x0c\n\x04keys\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xa3\x03\n\x17GetPathElementsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0H\x00\x1a\xa0\x02\n\x19GetPathElementsResponseV0\x12i\n\x08\x65lements\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0.ElementsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1c\n\x08\x45lements\x12\x10\n\x08\x65lements\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\x81\x01\n\x10GetStatusRequest\x12L\n\x02v0\x18\x01 \x01(\x0b\x32>.org.dash.platform.dapi.v0.GetStatusRequest.GetStatusRequestV0H\x00\x1a\x14\n\x12GetStatusRequestV0B\t\n\x07version\"\xd0\x10\n\x11GetStatusResponse\x12N\n\x02v0\x18\x01 \x01(\x0b\x32@.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0H\x00\x1a\xdf\x0f\n\x13GetStatusResponseV0\x12Y\n\x07version\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version\x12S\n\x04node\x18\x02 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Node\x12U\n\x05\x63hain\x18\x03 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Chain\x12Y\n\x07network\x18\x04 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Network\x12^\n\nstate_sync\x18\x05 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.StateSync\x12S\n\x04time\x18\x06 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Time\x1a\xee\x04\n\x07Version\x12\x63\n\x08software\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Software\x12\x63\n\x08protocol\x18\x02 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol\x1a^\n\x08Software\x12\x0c\n\x04\x64\x61pi\x18\x01 \x01(\t\x12\x12\n\x05\x64rive\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ntenderdash\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_driveB\r\n\x0b_tenderdash\x1a\xb8\x02\n\x08Protocol\x12p\n\ntenderdash\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Tenderdash\x12\x66\n\x05\x64rive\x18\x02 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Drive\x1a(\n\nTenderdash\x12\x0b\n\x03p2p\x18\x01 \x01(\r\x12\r\n\x05\x62lock\x18\x02 \x01(\r\x1a(\n\x05\x44rive\x12\x0e\n\x06latest\x18\x03 \x01(\r\x12\x0f\n\x07\x63urrent\x18\x04 \x01(\r\x1a\x7f\n\x04Time\x12\x11\n\x05local\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x05\x62lock\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x12\x18\n\x07genesis\x18\x03 \x01(\x04\x42\x02\x30\x01H\x01\x88\x01\x01\x12\x12\n\x05\x65poch\x18\x04 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_blockB\n\n\x08_genesisB\x08\n\x06_epoch\x1a<\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x18\n\x0bpro_tx_hash\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x0e\n\x0c_pro_tx_hash\x1a\xb3\x02\n\x05\x43hain\x12\x13\n\x0b\x63\x61tching_up\x18\x01 \x01(\x08\x12\x19\n\x11latest_block_hash\x18\x02 \x01(\x0c\x12\x17\n\x0flatest_app_hash\x18\x03 \x01(\x0c\x12\x1f\n\x13latest_block_height\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13\x65\x61rliest_block_hash\x18\x05 \x01(\x0c\x12\x19\n\x11\x65\x61rliest_app_hash\x18\x06 \x01(\x0c\x12!\n\x15\x65\x61rliest_block_height\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15max_peer_block_height\x18\t \x01(\x04\x42\x02\x30\x01\x12%\n\x18\x63ore_chain_locked_height\x18\n \x01(\rH\x00\x88\x01\x01\x42\x1b\n\x19_core_chain_locked_height\x1a\x43\n\x07Network\x12\x10\n\x08\x63hain_id\x18\x01 \x01(\t\x12\x13\n\x0bpeers_count\x18\x02 \x01(\r\x12\x11\n\tlistening\x18\x03 \x01(\x08\x1a\x85\x02\n\tStateSync\x12\x1d\n\x11total_synced_time\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1a\n\x0eremaining_time\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0ftotal_snapshots\x18\x03 \x01(\r\x12\"\n\x16\x63hunk_process_avg_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x0fsnapshot_height\x18\x05 \x01(\x04\x42\x02\x30\x01\x12!\n\x15snapshot_chunks_count\x18\x06 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x11\x62\x61\x63kfilled_blocks\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15\x62\x61\x63kfill_blocks_total\x18\x08 \x01(\x04\x42\x02\x30\x01\x42\t\n\x07version\"\xb1\x01\n\x1cGetCurrentQuorumsInfoRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest.GetCurrentQuorumsInfoRequestV0H\x00\x1a \n\x1eGetCurrentQuorumsInfoRequestV0B\t\n\x07version\"\xa1\x05\n\x1dGetCurrentQuorumsInfoResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.GetCurrentQuorumsInfoResponseV0H\x00\x1a\x46\n\x0bValidatorV0\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07node_ip\x18\x02 \x01(\t\x12\x11\n\tis_banned\x18\x03 \x01(\x08\x1a\xaf\x01\n\x0eValidatorSetV0\x12\x13\n\x0bquorum_hash\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ore_height\x18\x02 \x01(\r\x12U\n\x07members\x18\x03 \x03(\x0b\x32\x44.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorV0\x12\x1c\n\x14threshold_public_key\x18\x04 \x01(\x0c\x1a\x92\x02\n\x1fGetCurrentQuorumsInfoResponseV0\x12\x15\n\rquorum_hashes\x18\x01 \x03(\x0c\x12\x1b\n\x13\x63urrent_quorum_hash\x18\x02 \x01(\x0c\x12_\n\x0evalidator_sets\x18\x03 \x03(\x0b\x32G.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorSetV0\x12\x1b\n\x13last_block_proposer\x18\x04 \x01(\x0c\x12=\n\x08metadata\x18\x05 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\t\n\x07version\"\xf4\x01\n\x1fGetIdentityTokenBalancesRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest.GetIdentityTokenBalancesRequestV0H\x00\x1aZ\n!GetIdentityTokenBalancesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xad\x05\n GetIdentityTokenBalancesResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0H\x00\x1a\x8f\x04\n\"GetIdentityTokenBalancesResponseV0\x12\x86\x01\n\x0etoken_balances\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aG\n\x11TokenBalanceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x9a\x01\n\rTokenBalances\x12\x88\x01\n\x0etoken_balances\x18\x01 \x03(\x0b\x32p.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xfc\x01\n!GetIdentitiesTokenBalancesRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest.GetIdentitiesTokenBalancesRequestV0H\x00\x1a\\\n#GetIdentitiesTokenBalancesRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xf2\x05\n\"GetIdentitiesTokenBalancesResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0H\x00\x1a\xce\x04\n$GetIdentitiesTokenBalancesResponseV0\x12\x9b\x01\n\x17identity_token_balances\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aR\n\x19IdentityTokenBalanceEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\xb7\x01\n\x15IdentityTokenBalances\x12\x9d\x01\n\x17identity_token_balances\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xe8\x01\n\x1cGetIdentityTokenInfosRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest.GetIdentityTokenInfosRequestV0H\x00\x1aW\n\x1eGetIdentityTokenInfosRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\x98\x06\n\x1dGetIdentityTokenInfosResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0H\x00\x1a\x83\x05\n\x1fGetIdentityTokenInfosResponseV0\x12z\n\x0btoken_infos\x18\x01 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb0\x01\n\x0eTokenInfoEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x82\x01\n\x04info\x18\x02 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x8a\x01\n\nTokenInfos\x12|\n\x0btoken_infos\x18\x01 \x03(\x0b\x32g.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n\x1eGetIdentitiesTokenInfosRequest\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest.GetIdentitiesTokenInfosRequestV0H\x00\x1aY\n GetIdentitiesTokenInfosRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xca\x06\n\x1fGetIdentitiesTokenInfosResponse\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0H\x00\x1a\xaf\x05\n!GetIdentitiesTokenInfosResponseV0\x12\x8f\x01\n\x14identity_token_infos\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.IdentityTokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb7\x01\n\x0eTokenInfoEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x86\x01\n\x04info\x18\x02 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x97\x01\n\x12IdentityTokenInfos\x12\x80\x01\n\x0btoken_infos\x18\x01 \x03(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbf\x01\n\x17GetTokenStatusesRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetTokenStatusesRequest.GetTokenStatusesRequestV0H\x00\x1a=\n\x19GetTokenStatusesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xe7\x04\n\x18GetTokenStatusesResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0H\x00\x1a\xe1\x03\n\x1aGetTokenStatusesResponseV0\x12v\n\x0etoken_statuses\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x44\n\x10TokenStatusEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x13\n\x06paused\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_paused\x1a\x88\x01\n\rTokenStatuses\x12w\n\x0etoken_statuses\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusEntryB\x08\n\x06resultB\t\n\x07version\"\xef\x01\n#GetTokenDirectPurchasePricesRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest.GetTokenDirectPurchasePricesRequestV0H\x00\x1aI\n%GetTokenDirectPurchasePricesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x8b\t\n$GetTokenDirectPurchasePricesResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0H\x00\x1a\xe1\x07\n&GetTokenDirectPurchasePricesResponseV0\x12\xa9\x01\n\x1ctoken_direct_purchase_prices\x18\x01 \x01(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePricesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xa7\x01\n\x0fPricingSchedule\x12\x93\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PriceForQuantity\x1a\xe4\x01\n\x1dTokenDirectPurchasePriceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x15\n\x0b\x66ixed_price\x18\x02 \x01(\x04H\x00\x12\x90\x01\n\x0evariable_price\x18\x03 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PricingScheduleH\x00\x42\x07\n\x05price\x1a\xc8\x01\n\x19TokenDirectPurchasePrices\x12\xaa\x01\n\x1btoken_direct_purchase_price\x18\x01 \x03(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePriceEntryB\x08\n\x06resultB\t\n\x07version\"\xce\x01\n\x1bGetTokenContractInfoRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenContractInfoRequest.GetTokenContractInfoRequestV0H\x00\x1a@\n\x1dGetTokenContractInfoRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xfb\x03\n\x1cGetTokenContractInfoResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0H\x00\x1a\xe9\x02\n\x1eGetTokenContractInfoResponseV0\x12|\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0.TokenContractInfoDataH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aM\n\x15TokenContractInfoData\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xef\x04\n)GetTokenPreProgrammedDistributionsRequest\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0H\x00\x1a\xb6\x03\n+GetTokenPreProgrammedDistributionsRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x98\x01\n\rstart_at_info\x18\x02 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0.StartAtInfoH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x1a\x9a\x01\n\x0bStartAtInfo\x12\x15\n\rstart_time_ms\x18\x01 \x01(\x04\x12\x1c\n\x0fstart_recipient\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12%\n\x18start_recipient_included\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_start_recipientB\x1b\n\x19_start_recipient_includedB\x10\n\x0e_start_at_infoB\x08\n\x06_limitB\t\n\x07version\"\xec\x07\n*GetTokenPreProgrammedDistributionsResponse\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0H\x00\x1a\xaf\x06\n,GetTokenPreProgrammedDistributionsResponseV0\x12\xa5\x01\n\x13token_distributions\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a>\n\x16TokenDistributionEntry\x12\x14\n\x0crecipient_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x1a\xd4\x01\n\x1bTokenTimedDistributionEntry\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\xa1\x01\n\rdistributions\x18\x02 \x03(\x0b\x32\x89\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionEntry\x1a\xc3\x01\n\x12TokenDistributions\x12\xac\x01\n\x13token_distributions\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenTimedDistributionEntryB\x08\n\x06resultB\t\n\x07version\"\x82\x04\n-GetTokenPerpetualDistributionLastClaimRequest\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.GetTokenPerpetualDistributionLastClaimRequestV0H\x00\x1aI\n\x11\x43ontractTokenInfo\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\r\x1a\xf1\x01\n/GetTokenPerpetualDistributionLastClaimRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12v\n\rcontract_info\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.ContractTokenInfoH\x00\x88\x01\x01\x12\x13\n\x0bidentity_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x10\n\x0e_contract_infoB\t\n\x07version\"\x93\x05\n.GetTokenPerpetualDistributionLastClaimResponse\x12\x88\x01\n\x02v0\x18\x01 \x01(\x0b\x32z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0H\x00\x1a\xca\x03\n0GetTokenPerpetualDistributionLastClaimResponseV0\x12\x9f\x01\n\nlast_claim\x18\x01 \x01(\x0b\x32\x88\x01.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0.LastClaimInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\rLastClaimInfo\x12\x1a\n\x0ctimestamp_ms\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x1a\n\x0c\x62lock_height\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x12\x0f\n\x05\x65poch\x18\x03 \x01(\rH\x00\x12\x13\n\traw_bytes\x18\x04 \x01(\x0cH\x00\x42\t\n\x07paid_atB\x08\n\x06resultB\t\n\x07version\"\xca\x01\n\x1aGetTokenTotalSupplyRequest\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest.GetTokenTotalSupplyRequestV0H\x00\x1a?\n\x1cGetTokenTotalSupplyRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xaf\x04\n\x1bGetTokenTotalSupplyResponse\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0H\x00\x1a\xa0\x03\n\x1dGetTokenTotalSupplyResponseV0\x12\x88\x01\n\x12token_total_supply\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0.TokenTotalSupplyEntryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\x15TokenTotalSupplyEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x30\n(total_aggregated_amount_in_user_accounts\x18\x02 \x01(\x04\x12\x1b\n\x13total_system_amount\x18\x03 \x01(\x04\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x01\n\x13GetGroupInfoRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetGroupInfoRequest.GetGroupInfoRequestV0H\x00\x1a\\\n\x15GetGroupInfoRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xd4\x05\n\x14GetGroupInfoResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0H\x00\x1a\xda\x04\n\x16GetGroupInfoResponseV0\x12\x66\n\ngroup_info\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x98\x01\n\x0eGroupInfoEntry\x12h\n\x07members\x18\x01 \x03(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x02 \x01(\r\x1a\x8a\x01\n\tGroupInfo\x12n\n\ngroup_info\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoEntryH\x00\x88\x01\x01\x42\r\n\x0b_group_infoB\x08\n\x06resultB\t\n\x07version\"\xed\x03\n\x14GetGroupInfosRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfosRequest.GetGroupInfosRequestV0H\x00\x1au\n\x1cStartAtGroupContractPosition\x12%\n\x1dstart_group_contract_position\x18\x01 \x01(\r\x12.\n&start_group_contract_position_included\x18\x02 \x01(\x08\x1a\xfc\x01\n\x16GetGroupInfosRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12{\n start_at_group_contract_position\x18\x02 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupInfosRequest.StartAtGroupContractPositionH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x42#\n!_start_at_group_contract_positionB\x08\n\x06_countB\t\n\x07version\"\xff\x05\n\x15GetGroupInfosResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0H\x00\x1a\x82\x05\n\x17GetGroupInfosResponseV0\x12j\n\x0bgroup_infos\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\xc3\x01\n\x16GroupPositionInfoEntry\x12\x1f\n\x17group_contract_position\x18\x01 \x01(\r\x12j\n\x07members\x18\x02 \x03(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x03 \x01(\r\x1a\x82\x01\n\nGroupInfos\x12t\n\x0bgroup_infos\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupPositionInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbe\x04\n\x16GetGroupActionsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetGroupActionsRequest.GetGroupActionsRequestV0H\x00\x1aL\n\x0fStartAtActionId\x12\x17\n\x0fstart_action_id\x18\x01 \x01(\x0c\x12 \n\x18start_action_id_included\x18\x02 \x01(\x08\x1a\xc8\x02\n\x18GetGroupActionsRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12N\n\x06status\x18\x03 \x01(\x0e\x32>.org.dash.platform.dapi.v0.GetGroupActionsRequest.ActionStatus\x12\x62\n\x12start_at_action_id\x18\x04 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetGroupActionsRequest.StartAtActionIdH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x42\x15\n\x13_start_at_action_idB\x08\n\x06_count\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\xd6\x1e\n\x17GetGroupActionsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0H\x00\x1a\xd3\x1d\n\x19GetGroupActionsResponseV0\x12r\n\rgroup_actions\x18\x01 \x01(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a[\n\tMintEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0crecipient_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a[\n\tBurnEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0c\x62urn_from_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aJ\n\x0b\x46reezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aL\n\rUnfreezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x66\n\x17\x44\x65stroyFrozenFundsEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x13SharedEncryptedNote\x12\x18\n\x10sender_key_index\x18\x01 \x01(\r\x12\x1b\n\x13recipient_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a{\n\x15PersonalEncryptedNote\x12!\n\x19root_encryption_key_index\x18\x01 \x01(\r\x12\'\n\x1f\x64\x65rivation_encryption_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a\xe9\x01\n\x14\x45mergencyActionEvent\x12\x81\x01\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32l.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEvent.ActionType\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\"#\n\nActionType\x12\t\n\x05PAUSE\x10\x00\x12\n\n\x06RESUME\x10\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x16TokenConfigUpdateEvent\x12 \n\x18token_config_update_item\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\xe6\x03\n\x1eUpdateDirectPurchasePriceEvent\x12\x15\n\x0b\x66ixed_price\x18\x01 \x01(\x04H\x00\x12\x95\x01\n\x0evariable_price\x18\x02 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PricingScheduleH\x00\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x01\x88\x01\x01\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xac\x01\n\x0fPricingSchedule\x12\x98\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PriceForQuantityB\x07\n\x05priceB\x0e\n\x0c_public_note\x1a\xfc\x02\n\x10GroupActionEvent\x12n\n\x0btoken_event\x18\x01 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenEventH\x00\x12t\n\x0e\x64ocument_event\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentEventH\x00\x12t\n\x0e\x63ontract_event\x18\x03 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractEventH\x00\x42\x0c\n\nevent_type\x1a\x8b\x01\n\rDocumentEvent\x12r\n\x06\x63reate\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentCreateEventH\x00\x42\x06\n\x04type\x1a/\n\x13\x44ocumentCreateEvent\x12\x18\n\x10\x63reated_document\x18\x01 \x01(\x0c\x1a/\n\x13\x43ontractUpdateEvent\x12\x18\n\x10updated_contract\x18\x01 \x01(\x0c\x1a\x8b\x01\n\rContractEvent\x12r\n\x06update\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractUpdateEventH\x00\x42\x06\n\x04type\x1a\xd1\x07\n\nTokenEvent\x12\x66\n\x04mint\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.MintEventH\x00\x12\x66\n\x04\x62urn\x18\x02 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.BurnEventH\x00\x12j\n\x06\x66reeze\x18\x03 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.FreezeEventH\x00\x12n\n\x08unfreeze\x18\x04 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UnfreezeEventH\x00\x12\x84\x01\n\x14\x64\x65stroy_frozen_funds\x18\x05 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DestroyFrozenFundsEventH\x00\x12}\n\x10\x65mergency_action\x18\x06 \x01(\x0b\x32\x61.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEventH\x00\x12\x82\x01\n\x13token_config_update\x18\x07 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenConfigUpdateEventH\x00\x12\x83\x01\n\x0cupdate_price\x18\x08 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEventH\x00\x42\x06\n\x04type\x1a\x93\x01\n\x10GroupActionEntry\x12\x11\n\taction_id\x18\x01 \x01(\x0c\x12l\n\x05\x65vent\x18\x02 \x01(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEvent\x1a\x84\x01\n\x0cGroupActions\x12t\n\rgroup_actions\x18\x01 \x03(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEntryB\x08\n\x06resultB\t\n\x07version\"\x88\x03\n\x1cGetGroupActionSignersRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.GetGroupActionSignersRequestV0H\x00\x1a\xce\x01\n\x1eGetGroupActionSignersRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12T\n\x06status\x18\x03 \x01(\x0e\x32\x44.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.ActionStatus\x12\x11\n\taction_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\x8b\x05\n\x1dGetGroupActionSignersResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0H\x00\x1a\xf6\x03\n\x1fGetGroupActionSignersResponseV0\x12\x8b\x01\n\x14group_action_signers\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x35\n\x11GroupActionSigner\x12\x11\n\tsigner_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x91\x01\n\x12GroupActionSigners\x12{\n\x07signers\x18\x01 \x03(\x0b\x32j.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignerB\x08\n\x06resultB\t\n\x07version*Z\n\nKeyPurpose\x12\x12\n\x0e\x41UTHENTICATION\x10\x00\x12\x0e\n\nENCRYPTION\x10\x01\x12\x0e\n\nDECRYPTION\x10\x02\x12\x0c\n\x08TRANSFER\x10\x03\x12\n\n\x06VOTING\x10\x05\x32\xf4\x36\n\x08Platform\x12\x93\x01\n\x18\x62roadcastStateTransition\x12:.org.dash.platform.dapi.v0.BroadcastStateTransitionRequest\x1a;.org.dash.platform.dapi.v0.BroadcastStateTransitionResponse\x12l\n\x0bgetIdentity\x12-.org.dash.platform.dapi.v0.GetIdentityRequest\x1a..org.dash.platform.dapi.v0.GetIdentityResponse\x12x\n\x0fgetIdentityKeys\x12\x31.org.dash.platform.dapi.v0.GetIdentityKeysRequest\x1a\x32.org.dash.platform.dapi.v0.GetIdentityKeysResponse\x12\x96\x01\n\x19getIdentitiesContractKeys\x12;.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest\x1a<.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse\x12{\n\x10getIdentityNonce\x12\x32.org.dash.platform.dapi.v0.GetIdentityNonceRequest\x1a\x33.org.dash.platform.dapi.v0.GetIdentityNonceResponse\x12\x93\x01\n\x18getIdentityContractNonce\x12:.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse\x12\x81\x01\n\x12getIdentityBalance\x12\x34.org.dash.platform.dapi.v0.GetIdentityBalanceRequest\x1a\x35.org.dash.platform.dapi.v0.GetIdentityBalanceResponse\x12\x8a\x01\n\x15getIdentitiesBalances\x12\x37.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse\x12\xa2\x01\n\x1dgetIdentityBalanceAndRevision\x12?.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest\x1a@.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse\x12\xaf\x01\n#getEvonodesProposedEpochBlocksByIds\x12\x45.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12\xb3\x01\n%getEvonodesProposedEpochBlocksByRange\x12G.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12x\n\x0fgetDataContract\x12\x31.org.dash.platform.dapi.v0.GetDataContractRequest\x1a\x32.org.dash.platform.dapi.v0.GetDataContractResponse\x12\x8d\x01\n\x16getDataContractHistory\x12\x38.org.dash.platform.dapi.v0.GetDataContractHistoryRequest\x1a\x39.org.dash.platform.dapi.v0.GetDataContractHistoryResponse\x12{\n\x10getDataContracts\x12\x32.org.dash.platform.dapi.v0.GetDataContractsRequest\x1a\x33.org.dash.platform.dapi.v0.GetDataContractsResponse\x12o\n\x0cgetDocuments\x12..org.dash.platform.dapi.v0.GetDocumentsRequest\x1a/.org.dash.platform.dapi.v0.GetDocumentsResponse\x12\x99\x01\n\x1agetIdentityByPublicKeyHash\x12<.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest\x1a=.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse\x12\xb4\x01\n#getIdentityByNonUniquePublicKeyHash\x12\x45.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest\x1a\x46.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse\x12\x9f\x01\n\x1cwaitForStateTransitionResult\x12>.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest\x1a?.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse\x12\x81\x01\n\x12getConsensusParams\x12\x34.org.dash.platform.dapi.v0.GetConsensusParamsRequest\x1a\x35.org.dash.platform.dapi.v0.GetConsensusParamsResponse\x12\xa5\x01\n\x1egetProtocolVersionUpgradeState\x12@.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest\x1a\x41.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse\x12\xb4\x01\n#getProtocolVersionUpgradeVoteStatus\x12\x45.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest\x1a\x46.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse\x12r\n\rgetEpochsInfo\x12/.org.dash.platform.dapi.v0.GetEpochsInfoRequest\x1a\x30.org.dash.platform.dapi.v0.GetEpochsInfoResponse\x12\x8d\x01\n\x16getFinalizedEpochInfos\x12\x38.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest\x1a\x39.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse\x12\x8a\x01\n\x15getContestedResources\x12\x37.org.dash.platform.dapi.v0.GetContestedResourcesRequest\x1a\x38.org.dash.platform.dapi.v0.GetContestedResourcesResponse\x12\xa2\x01\n\x1dgetContestedResourceVoteState\x12?.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest\x1a@.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse\x12\xba\x01\n%getContestedResourceVotersForIdentity\x12G.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest\x1aH.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse\x12\xae\x01\n!getContestedResourceIdentityVotes\x12\x43.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest\x1a\x44.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse\x12\x8a\x01\n\x15getVotePollsByEndDate\x12\x37.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest\x1a\x38.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse\x12\xa5\x01\n\x1egetPrefundedSpecializedBalance\x12@.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest\x1a\x41.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse\x12\x96\x01\n\x19getTotalCreditsInPlatform\x12;.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest\x1a<.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse\x12x\n\x0fgetPathElements\x12\x31.org.dash.platform.dapi.v0.GetPathElementsRequest\x1a\x32.org.dash.platform.dapi.v0.GetPathElementsResponse\x12\x66\n\tgetStatus\x12+.org.dash.platform.dapi.v0.GetStatusRequest\x1a,.org.dash.platform.dapi.v0.GetStatusResponse\x12\x8a\x01\n\x15getCurrentQuorumsInfo\x12\x37.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest\x1a\x38.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse\x12\x93\x01\n\x18getIdentityTokenBalances\x12:.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse\x12\x99\x01\n\x1agetIdentitiesTokenBalances\x12<.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest\x1a=.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse\x12\x8a\x01\n\x15getIdentityTokenInfos\x12\x37.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse\x12\x90\x01\n\x17getIdentitiesTokenInfos\x12\x39.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest\x1a:.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse\x12{\n\x10getTokenStatuses\x12\x32.org.dash.platform.dapi.v0.GetTokenStatusesRequest\x1a\x33.org.dash.platform.dapi.v0.GetTokenStatusesResponse\x12\x9f\x01\n\x1cgetTokenDirectPurchasePrices\x12>.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest\x1a?.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse\x12\x87\x01\n\x14getTokenContractInfo\x12\x36.org.dash.platform.dapi.v0.GetTokenContractInfoRequest\x1a\x37.org.dash.platform.dapi.v0.GetTokenContractInfoResponse\x12\xb1\x01\n\"getTokenPreProgrammedDistributions\x12\x44.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest\x1a\x45.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse\x12\xbd\x01\n&getTokenPerpetualDistributionLastClaim\x12H.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest\x1aI.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse\x12\x84\x01\n\x13getTokenTotalSupply\x12\x35.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest\x1a\x36.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse\x12o\n\x0cgetGroupInfo\x12..org.dash.platform.dapi.v0.GetGroupInfoRequest\x1a/.org.dash.platform.dapi.v0.GetGroupInfoResponse\x12r\n\rgetGroupInfos\x12/.org.dash.platform.dapi.v0.GetGroupInfosRequest\x1a\x30.org.dash.platform.dapi.v0.GetGroupInfosResponse\x12x\n\x0fgetGroupActions\x12\x31.org.dash.platform.dapi.v0.GetGroupActionsRequest\x1a\x32.org.dash.platform.dapi.v0.GetGroupActionsResponse\x12\x8a\x01\n\x15getGroupActionSigners\x12\x37.org.dash.platform.dapi.v0.GetGroupActionSignersRequest\x1a\x38.org.dash.platform.dapi.v0.GetGroupActionSignersResponse\x12\x8c\x01\n\x17subscribePlatformEvents\x12\x36.org.dash.platform.dapi.v0.PlatformSubscriptionRequest\x1a\x37.org.dash.platform.dapi.v0.PlatformSubscriptionResponse0\x01\x62\x06proto3' , dependencies=[google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) @@ -18172,8 +18172,8 @@ create_key=_descriptor._internal_create_key, ), _descriptor.MethodDescriptor( - name='SubscribePlatformEvents', - full_name='org.dash.platform.dapi.v0.Platform.SubscribePlatformEvents', + name='subscribePlatformEvents', + full_name='org.dash.platform.dapi.v0.Platform.subscribePlatformEvents', index=47, containing_service=None, input_type=_PLATFORMSUBSCRIPTIONREQUEST, diff --git a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py index 849996d3ff0..26beea8b7c3 100644 --- a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py +++ b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py @@ -249,8 +249,8 @@ def __init__(self, channel): request_serializer=platform__pb2.GetGroupActionSignersRequest.SerializeToString, response_deserializer=platform__pb2.GetGroupActionSignersResponse.FromString, ) - self.SubscribePlatformEvents = channel.unary_stream( - '/org.dash.platform.dapi.v0.Platform/SubscribePlatformEvents', + self.subscribePlatformEvents = channel.unary_stream( + '/org.dash.platform.dapi.v0.Platform/subscribePlatformEvents', request_serializer=platform__pb2.PlatformSubscriptionRequest.SerializeToString, response_deserializer=platform__pb2.PlatformSubscriptionResponse.FromString, ) @@ -546,7 +546,7 @@ def getGroupActionSigners(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') - def SubscribePlatformEvents(self, request, context): + def subscribePlatformEvents(self, request, context): """Bi-directional stream for multiplexed platform events subscriptions """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) @@ -791,8 +791,8 @@ def add_PlatformServicer_to_server(servicer, server): request_deserializer=platform__pb2.GetGroupActionSignersRequest.FromString, response_serializer=platform__pb2.GetGroupActionSignersResponse.SerializeToString, ), - 'SubscribePlatformEvents': grpc.unary_stream_rpc_method_handler( - servicer.SubscribePlatformEvents, + 'subscribePlatformEvents': grpc.unary_stream_rpc_method_handler( + servicer.subscribePlatformEvents, request_deserializer=platform__pb2.PlatformSubscriptionRequest.FromString, response_serializer=platform__pb2.PlatformSubscriptionResponse.SerializeToString, ), @@ -1606,7 +1606,7 @@ def getGroupActionSigners(request, insecure, call_credentials, compression, wait_for_ready, timeout, metadata) @staticmethod - def SubscribePlatformEvents(request, + def subscribePlatformEvents(request, target, options=(), channel_credentials=None, @@ -1616,7 +1616,7 @@ def SubscribePlatformEvents(request, wait_for_ready=None, timeout=None, metadata=None): - return grpc.experimental.unary_stream(request, target, '/org.dash.platform.dapi.v0.Platform/SubscribePlatformEvents', + return grpc.experimental.unary_stream(request, target, '/org.dash.platform.dapi.v0.Platform/subscribePlatformEvents', platform__pb2.PlatformSubscriptionRequest.SerializeToString, platform__pb2.PlatformSubscriptionResponse.FromString, options, channel_credentials, diff --git a/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.d.ts b/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.d.ts index b2af61089ca..b12ee7a9b63 100644 --- a/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.d.ts +++ b/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.d.ts @@ -427,7 +427,7 @@ type PlatformgetGroupActionSigners = { readonly responseType: typeof platform_pb.GetGroupActionSignersResponse; }; -type PlatformSubscribePlatformEvents = { +type PlatformsubscribePlatformEvents = { readonly methodName: string; readonly service: typeof Platform; readonly requestStream: false; @@ -485,7 +485,7 @@ export class Platform { static readonly getGroupInfos: PlatformgetGroupInfos; static readonly getGroupActions: PlatformgetGroupActions; static readonly getGroupActionSigners: PlatformgetGroupActionSigners; - static readonly SubscribePlatformEvents: PlatformSubscribePlatformEvents; + static readonly subscribePlatformEvents: PlatformsubscribePlatformEvents; } export type ServiceError = { message: string, code: number; metadata: grpc.Metadata } diff --git a/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.js b/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.js index a609d70ee3e..4a5e56e59a3 100644 --- a/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.js +++ b/packages/dapi-grpc/clients/platform/v0/web/platform_pb_service.js @@ -433,8 +433,8 @@ Platform.getGroupActionSigners = { responseType: platform_pb.GetGroupActionSignersResponse }; -Platform.SubscribePlatformEvents = { - methodName: "SubscribePlatformEvents", +Platform.subscribePlatformEvents = { + methodName: "subscribePlatformEvents", service: Platform, requestStream: false, responseStream: true, @@ -1912,7 +1912,7 @@ PlatformClient.prototype.subscribePlatformEvents = function subscribePlatformEve end: [], status: [] }; - var client = grpc.invoke(Platform.SubscribePlatformEvents, { + var client = grpc.invoke(Platform.subscribePlatformEvents, { request: requestMessage, host: this.serviceHost, metadata: metadata, diff --git a/packages/dapi-grpc/protos/platform/v0/platform.proto b/packages/dapi-grpc/protos/platform/v0/platform.proto index 2d3ed910c0a..93fc4cda11a 100644 --- a/packages/dapi-grpc/protos/platform/v0/platform.proto +++ b/packages/dapi-grpc/protos/platform/v0/platform.proto @@ -167,8 +167,8 @@ service Platform { rpc getGroupActionSigners(GetGroupActionSignersRequest) returns (GetGroupActionSignersResponse); - // Bi-directional stream for multiplexed platform events subscriptions - rpc SubscribePlatformEvents(PlatformSubscriptionRequest) + // Server-streaming subscription for platform events + rpc subscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse); } diff --git a/packages/dapi-grpc/src/lib.rs b/packages/dapi-grpc/src/lib.rs index d50aa188dd0..0cb662de77e 100644 --- a/packages/dapi-grpc/src/lib.rs +++ b/packages/dapi-grpc/src/lib.rs @@ -21,6 +21,7 @@ pub mod core { } #[cfg(feature = "platform")] +#[allow(non_camel_case_types)] pub mod platform { pub mod v0 { #[cfg(all(feature = "server", not(target_arch = "wasm32")))] diff --git a/packages/dashmate/docs/services/gateway.md b/packages/dashmate/docs/services/gateway.md index 4d4d65278ce..7d9f3f80a93 100644 --- a/packages/dashmate/docs/services/gateway.md +++ b/packages/dashmate/docs/services/gateway.md @@ -72,7 +72,7 @@ The Gateway routes requests to different backend services based on URL path: - Core streaming endpoints (`/org.dash.platform.dapi.v0.Core/subscribeTo*`): routed to `dapi_core_streams` - Other Core endpoints (`/org.dash.platform.dapi.v0.Core*`): routed to `dapi_api` - Platform waitForStateTransitionResult (`/org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult`): routed to `dapi_api` with an extended timeout -- Platform SubscribePlatformEvents (`/org.dash.platform.dapi.v0.Platform/SubscribePlatformEvents`): routed to `rs_dapi` with an extended timeout +- Platform subscribePlatformEvents (`/org.dash.platform.dapi.v0.Platform/subscribePlatformEvents`): routed to `rs_dapi` with an extended timeout - Platform endpoints (`/org.dash.platform.dapi.v0.Platform*`): routed to `drive_grpc` - JSON-RPC endpoints (`/`): routed to `dapi_json_rpc` @@ -109,7 +109,7 @@ Dashmate exposes per-endpoint timeout controls that are shared between rs-dapi a - Standard API endpoints: 10-15 seconds (fixed in Envoy configuration) - Core streaming endpoints: derived from `platform.dapi.rsDapi.timeouts.coreStreams` (default 600 000 ms) - waitForStateTransitionResult endpoint: derived from `platform.dapi.rsDapi.timeouts.waitForStateTransitionResult` (default 120 000 ms) - - SubscribePlatformEvents endpoint: derived from `platform.dapi.rsDapi.timeouts.subscribePlatformEvents` (default 600 000 ms) + - subscribePlatformEvents endpoint: derived from `platform.dapi.rsDapi.timeouts.subscribePlatformEvents` (default 600 000 ms) ### Circuit Breaking diff --git a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot index f1cbf2aa6b0..6fd3a00cd57 100644 --- a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot +++ b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot @@ -232,7 +232,7 @@ timeout: 15s # rs-dapi subscribePlatformEvents endpoint with bigger timeout (now exposed directly) - match: - path: "/org.dash.platform.dapi.v0.Platform/SubscribePlatformEvents" + path: "/org.dash.platform.dapi.v0.Platform/subscribePlatformEvents" route: cluster: rs_dapi idle_timeout: {{= subscribePlatformEventsTimeout }} diff --git a/packages/rs-dapi/src/server/grpc.rs b/packages/rs-dapi/src/server/grpc.rs index 3e789aad7a0..0bc5b5503e4 100644 --- a/packages/rs-dapi/src/server/grpc.rs +++ b/packages/rs-dapi/src/server/grpc.rs @@ -107,7 +107,7 @@ impl TimeoutLayer { "/org.dash.platform.dapi.v0.Core/subscribeToTransactionsWithProofs", "/org.dash.platform.dapi.v0.Core/subscribeToMasternodeList", "/org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult", - "/org.dash.platform.dapi.v0.Platform/SubscribePlatformEvents", + "/org.dash.platform.dapi.v0.Platform/subscribePlatformEvents", ]; // Check if this is a known streaming method diff --git a/packages/rs-dapi/src/services/platform_service/mod.rs b/packages/rs-dapi/src/services/platform_service/mod.rs index f5134b320a8..4a1c1e8aaea 100644 --- a/packages/rs-dapi/src/services/platform_service/mod.rs +++ b/packages/rs-dapi/src/services/platform_service/mod.rs @@ -169,7 +169,7 @@ impl Platform for PlatformServiceImpl { // Manually implemented methods // Streaming: multiplexed platform events - type SubscribePlatformEventsStream = tokio_stream::wrappers::ReceiverStream< + type subscribePlatformEventsStream = tokio_stream::wrappers::ReceiverStream< Result, >; @@ -177,7 +177,7 @@ impl Platform for PlatformServiceImpl { &self, request: dapi_grpc::tonic::Request, ) -> Result< - dapi_grpc::tonic::Response, + dapi_grpc::tonic::Response, dapi_grpc::tonic::Status, > { self.subscribe_platform_events_impl(request).await diff --git a/packages/rs-drive-abci/src/query/service.rs b/packages/rs-drive-abci/src/query/service.rs index 8c925a31f87..09b0e83eeaf 100644 --- a/packages/rs-drive-abci/src/query/service.rs +++ b/packages/rs-drive-abci/src/query/service.rs @@ -873,13 +873,13 @@ impl PlatformService for QueryService { .await } - type SubscribePlatformEventsStream = + type subscribePlatformEventsStream = ReceiverStream>; async fn subscribe_platform_events( &self, request: Request, - ) -> Result, Status> { + ) -> Result, Status> { use dapi_grpc::platform::v0::platform_subscription_request::Version as RequestVersion; use dapi_grpc::platform::v0::platform_subscription_response::{ PlatformSubscriptionResponseV0, Version as ResponseVersion, diff --git a/packages/rs-drive-abci/tests/strategy_tests/main.rs b/packages/rs-drive-abci/tests/strategy_tests/main.rs index 5967e60a7fd..4e138599266 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/main.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/main.rs @@ -208,7 +208,7 @@ mod tests { use drive_abci::query::PlatformFilterAdapter; let config = PlatformConfig::default(); - let mut platform = TestPlatformBuilder::new() + let platform = TestPlatformBuilder::new() .with_config(config.clone()) .build_with_mock_rpc(); diff --git a/packages/rs-sdk/src/sdk.rs b/packages/rs-sdk/src/sdk.rs index fc80c390613..50896f09f15 100644 --- a/packages/rs-sdk/src/sdk.rs +++ b/packages/rs-sdk/src/sdk.rs @@ -603,26 +603,6 @@ impl Sdk { SdkInstance::Mock { address_list, .. } => address_list, } } - - /// Spawn a new worker task that will be managed by the Sdk. - #[cfg(feature = "subscriptions")] - pub(crate) async fn spawn( - &self, - task: impl std::future::Future + Send + 'static, - ) -> tokio::sync::oneshot::Receiver<()> { - let (done_tx, done_rx) = tokio::sync::oneshot::channel(); - let mut workers = self - .workers - .try_lock() - .expect("workers lock is poisoned or in use"); - workers.spawn(async move { - task.await; - let _ = done_tx.send(()); - }); - tokio::task::yield_now().await; - - done_rx - } } /// If received metadata time differs from local time by more than `tolerance`, the remote node is considered stale. diff --git a/packages/rs-sdk/tests/fetch/config.rs b/packages/rs-sdk/tests/fetch/config.rs index a7d07cd4962..6fa7082b301 100644 --- a/packages/rs-sdk/tests/fetch/config.rs +++ b/packages/rs-sdk/tests/fetch/config.rs @@ -47,6 +47,7 @@ pub struct Config { /// When platform_ssl is true, use the PEM-encoded CA certificate from provided absolute path to verify the server certificate. #[serde(default)] + #[allow(unused)] pub platform_ca_cert_path: Option, /// Directory where all generated test vectors will be saved. diff --git a/packages/rs-sdk/tests/fetch/platform_events.rs b/packages/rs-sdk/tests/fetch/platform_events.rs index c98e4300f29..9cd893d065c 100644 --- a/packages/rs-sdk/tests/fetch/platform_events.rs +++ b/packages/rs-sdk/tests/fetch/platform_events.rs @@ -1,3 +1,5 @@ +#![cfg(all(feature = "network-testing", not(feature = "offline-testing")))] + use super::{common::setup_logs, config::Config}; use dapi_grpc::platform::v0::platform_client::PlatformClient; use dapi_grpc::platform::v0::platform_subscription_request::{ @@ -11,7 +13,6 @@ use rs_dapi_client::{RequestSettings, Uri}; use tokio::time::{timeout, Duration}; #[tokio::test(flavor = "multi_thread", worker_threads = 1)] -#[cfg(all(feature = "network-testing", not(feature = "offline-testing")))] async fn test_platform_events_subscribe_stream_opens() { setup_logs(); From 5ccbd08596236988f7887c012d52d96b8d3d62c5 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:28:39 +0100 Subject: [PATCH 25/40] test: fix platform events test --- .../protos/platform/v0/platform.proto | 7 +- .../rs-sdk/tests/fetch/platform_events.rs | 65 +++++++------------ 2 files changed, 28 insertions(+), 44 deletions(-) diff --git a/packages/dapi-grpc/protos/platform/v0/platform.proto b/packages/dapi-grpc/protos/platform/v0/platform.proto index 93fc4cda11a..b5903408409 100644 --- a/packages/dapi-grpc/protos/platform/v0/platform.proto +++ b/packages/dapi-grpc/protos/platform/v0/platform.proto @@ -20,6 +20,7 @@ message PlatformSubscriptionRequest { message PlatformSubscriptionResponse { message PlatformSubscriptionResponseV0 { string client_subscription_id = 1; + // Event details; can be nil/None, eg. during handshake PlatformEventV0 event = 2; } oneof version { PlatformSubscriptionResponseV0 v0 = 1; } @@ -167,7 +168,11 @@ service Platform { rpc getGroupActionSigners(GetGroupActionSignersRequest) returns (GetGroupActionSignersResponse); - // Server-streaming subscription for platform events + // Server-streaming subscription for platform events. + // + // Allows subscribint to various Platform events. + // + // Once connected, it sends handshake response with empty event. rpc subscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse); } diff --git a/packages/rs-sdk/tests/fetch/platform_events.rs b/packages/rs-sdk/tests/fetch/platform_events.rs index 9cd893d065c..9a090e7ab53 100644 --- a/packages/rs-sdk/tests/fetch/platform_events.rs +++ b/packages/rs-sdk/tests/fetch/platform_events.rs @@ -1,70 +1,49 @@ -#![cfg(all(feature = "network-testing", not(feature = "offline-testing")))] +#![cfg(all( + feature = "network-testing", + feature = "subscriptions", + not(feature = "offline-testing") +))] use super::{common::setup_logs, config::Config}; -use dapi_grpc::platform::v0::platform_client::PlatformClient; -use dapi_grpc::platform::v0::platform_subscription_request::{ - PlatformSubscriptionRequestV0, Version as RequestVersion, -}; use dapi_grpc::platform::v0::platform_subscription_response::Version as ResponseVersion; -use dapi_grpc::platform::v0::{PlatformFilterV0, PlatformSubscriptionRequest}; -use dapi_grpc::tonic::Request; -use rs_dapi_client::transport::create_channel; -use rs_dapi_client::{RequestSettings, Uri}; +use dapi_grpc::platform::v0::PlatformFilterV0; use tokio::time::{timeout, Duration}; #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn test_platform_events_subscribe_stream_opens() { setup_logs(); - // Build gRPC client from test config + setup_logs(); + let cfg = Config::new(); - let address = cfg - .address_list() - .get_live_address() - .expect("at least one platform address configured") - .clone(); - let uri: Uri = address.uri().clone(); - let settings = RequestSettings { - timeout: Some(Duration::from_secs(30)), - ..Default::default() - } - .finalize(); - let channel = create_channel(uri, Some(&settings)).expect("create channel"); - let mut client = PlatformClient::new(channel); + let sdk = cfg.setup_api("document_read").await; - let request = PlatformSubscriptionRequest { - version: Some(RequestVersion::V0(PlatformSubscriptionRequestV0 { - filter: Some(PlatformFilterV0 { - kind: Some(dapi_grpc::platform::v0::platform_filter_v0::Kind::All(true)), - }), - keepalive: 25, - })), + let filter = PlatformFilterV0 { + kind: Some(dapi_grpc::platform::v0::platform_filter_v0::Kind::All(true)), }; - - let mut stream = client - .subscribe_platform_events(Request::new(request)) + let mut subscription = sdk + .subscribe_platform_events(filter) .await - .expect("subscribe") - .into_inner(); + .expect("subscribe should succeed"); - let handshake = timeout(Duration::from_secs(1), stream.message()) + let handshake = timeout(Duration::from_secs(1), subscription.message()) .await .expect("handshake should arrive promptly") .expect("handshake message") .expect("handshake payload"); - if let Some(ResponseVersion::V0(v0)) = handshake.version { + if let Some(ResponseVersion::V0(ref v0)) = handshake.version { assert!( !v0.client_subscription_id.is_empty(), "handshake must include subscription id" ); - assert!( + + tracing::debug!( + ?handshake, + "Received handshake with subscription id: {}", v0.client_subscription_id - .parse::() - .map(|id| id > 0) - .unwrap_or(false), - "handshake subscription id must be a positive integer" ); + assert!( v0.event.is_none(), "handshake should not include an event payload" @@ -74,7 +53,7 @@ async fn test_platform_events_subscribe_stream_opens() { } // Ensure the stream stays open (no immediate event) by expecting a timeout when waiting for the next message. - let wait_result = timeout(Duration::from_millis(250), stream.message()).await; + let wait_result = timeout(Duration::from_millis(250), subscription.message()).await; assert!( wait_result.is_err(), "expected to time out waiting for initial platform event" From c55eb128a2c641437c8bc3ee6334c404e21d7348 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 10:29:35 +0100 Subject: [PATCH 26/40] chore: rebuild dapi clients --- .../dash/platform/dapi/v0/PlatformGrpc.java | 15 ++++++++++++--- .../platform/v0/objective-c/Platform.pbobjc.h | 1 + .../platform/v0/objective-c/Platform.pbrpc.h | 18 +++++++++++++++--- .../platform/v0/objective-c/Platform.pbrpc.m | 18 +++++++++++++++--- .../platform/v0/python/platform_pb2_grpc.py | 6 +++++- 5 files changed, 48 insertions(+), 10 deletions(-) diff --git a/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java b/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java index 23f228af480..5971780661e 100644 --- a/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java +++ b/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java @@ -1897,7 +1897,10 @@ public void getGroupActionSigners(org.dash.platform.dapi.v0.PlatformOuterClass.G /** *
-     * Bi-directional stream for multiplexed platform events subscriptions
+     * Server-streaming subscription for platform events.
+     * Allows subscribint to various Platform events.
+     * 
+     * Once connected, it sends handshake response with empty event.
      * 
*/ public void subscribePlatformEvents(org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest request, @@ -2654,7 +2657,10 @@ public void getGroupActionSigners(org.dash.platform.dapi.v0.PlatformOuterClass.G /** *
-     * Bi-directional stream for multiplexed platform events subscriptions
+     * Server-streaming subscription for platform events.
+     * Allows subscribint to various Platform events.
+     * 
+     * Once connected, it sends handshake response with empty event.
      * 
*/ public void subscribePlatformEvents(org.dash.platform.dapi.v0.PlatformOuterClass.PlatformSubscriptionRequest request, @@ -3024,7 +3030,10 @@ public org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersRespons /** *
-     * Bi-directional stream for multiplexed platform events subscriptions
+     * Server-streaming subscription for platform events.
+     * Allows subscribint to various Platform events.
+     * 
+     * Once connected, it sends handshake response with empty event.
      * 
*/ public java.util.Iterator subscribePlatformEvents( diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h index 795bab5c7b8..3beb345576a 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h @@ -533,6 +533,7 @@ GPB_FINAL @interface PlatformSubscriptionResponse_PlatformSubscriptionResponseV0 @property(nonatomic, readwrite, copy, null_resettable) NSString *clientSubscriptionId; +/** Event details; can be nil/None, eg. during handshake */ @property(nonatomic, readwrite, strong, null_resettable) PlatformEventV0 *event; /** Test to see if @c event has been set. */ @property(nonatomic, readwrite) BOOL hasEvent; diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h index 3c3a6a88058..ed8f9de7be5 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h @@ -345,7 +345,11 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark subscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse) /** - * Bi-directional stream for multiplexed platform events subscriptions + * Server-streaming subscription for platform events. + * + * Allows subscribint to various Platform events. + * + * Once connected, it sends handshake response with empty event. */ - (GRPCUnaryProtoCall *)subscribePlatformEventsWithMessage:(PlatformSubscriptionRequest *)message responseHandler:(id)handler callOptions:(GRPCCallOptions *_Nullable)callOptions; @@ -739,14 +743,22 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark subscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse) /** - * Bi-directional stream for multiplexed platform events subscriptions + * Server-streaming subscription for platform events. + * + * Allows subscribint to various Platform events. + * + * Once connected, it sends handshake response with empty event. * * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended. */ - (void)subscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)request eventHandler:(void(^)(BOOL done, PlatformSubscriptionResponse *_Nullable response, NSError *_Nullable error))eventHandler; /** - * Bi-directional stream for multiplexed platform events subscriptions + * Server-streaming subscription for platform events. + * + * Allows subscribint to various Platform events. + * + * Once connected, it sends handshake response with empty event. * * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended. */ diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m index 5b3f47ebef3..ac5ac60193a 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m @@ -1078,7 +1078,11 @@ - (GRPCUnaryProtoCall *)getGroupActionSignersWithMessage:(GetGroupActionSignersR #pragma mark subscribePlatformEvents(PlatformSubscriptionRequest) returns (stream PlatformSubscriptionResponse) /** - * Bi-directional stream for multiplexed platform events subscriptions + * Server-streaming subscription for platform events. + * + * Allows subscribint to various Platform events. + * + * Once connected, it sends handshake response with empty event. * * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended. */ @@ -1087,7 +1091,11 @@ - (void)subscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)reques } // Returns a not-yet-started RPC object. /** - * Bi-directional stream for multiplexed platform events subscriptions + * Server-streaming subscription for platform events. + * + * Allows subscribint to various Platform events. + * + * Once connected, it sends handshake response with empty event. * * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended. */ @@ -1098,7 +1106,11 @@ - (GRPCProtoCall *)RPCTosubscribePlatformEventsWithRequest:(PlatformSubscription responsesWriteable:[GRXWriteable writeableWithEventHandler:eventHandler]]; } /** - * Bi-directional stream for multiplexed platform events subscriptions + * Server-streaming subscription for platform events. + * + * Allows subscribint to various Platform events. + * + * Once connected, it sends handshake response with empty event. */ - (GRPCUnaryProtoCall *)subscribePlatformEventsWithMessage:(PlatformSubscriptionRequest *)message responseHandler:(id)handler callOptions:(GRPCCallOptions *_Nullable)callOptions { return [self RPCToMethod:@"subscribePlatformEvents" diff --git a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py index 26beea8b7c3..e9300e0f839 100644 --- a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py +++ b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py @@ -547,7 +547,11 @@ def getGroupActionSigners(self, request, context): raise NotImplementedError('Method not implemented!') def subscribePlatformEvents(self, request, context): - """Bi-directional stream for multiplexed platform events subscriptions + """Server-streaming subscription for platform events. + + Allows subscribint to various Platform events. + + Once connected, it sends handshake response with empty event. """ context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') From 241b30b727f467537acf03e4e50d445b12c603cc Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 12:36:05 +0100 Subject: [PATCH 27/40] chore: saturating sub the keepalive --- packages/rs-sdk/src/platform/events.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rs-sdk/src/platform/events.rs b/packages/rs-sdk/src/platform/events.rs index b0837246e06..e02d9553e04 100644 --- a/packages/rs-sdk/src/platform/events.rs +++ b/packages/rs-sdk/src/platform/events.rs @@ -42,7 +42,7 @@ impl crate::Sdk { let mut client: PlatformGrpcClient = PlatformClient::new(channel); // Keepalive should be less than the timeout to avoid unintentional disconnects. - let keepalive = (settings.timeout - Duration::from_secs(5)) + let keepalive = (settings.timeout.saturating_sub(Duration::from_secs(5))) .as_secs() .clamp(25, 300) as u32; let request = PlatformSubscriptionRequest { From d7d8f83780eb7dc7e1987d8368c95c5189d5da59 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 12:36:30 +0100 Subject: [PATCH 28/40] chore: recreate grpc clients --- .../clients/drive/v0/nodejs/drive_pbjs.js | 778 ++++++--- .../platform/v0/nodejs/platform_pbjs.js | 778 ++++++--- .../platform/v0/nodejs/platform_protoc.js | 530 +++++-- .../platform/v0/objective-c/Platform.pbobjc.h | 68 +- .../platform/v0/objective-c/Platform.pbobjc.m | 179 ++- .../platform/v0/python/platform_pb2.py | 1394 +++++++++-------- .../clients/platform/v0/web/platform_pb.d.ts | 98 +- .../clients/platform/v0/web/platform_pb.js | 530 +++++-- 8 files changed, 2858 insertions(+), 1497 deletions(-) diff --git a/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js b/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js index d5fed08b23c..e46c0fa6a1e 100644 --- a/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js +++ b/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js @@ -1414,211 +1414,15 @@ $root.org = (function() { return PlatformSubscriptionResponse; })(); - v0.StateTransitionResultFilter = (function() { - - /** - * Properties of a StateTransitionResultFilter. - * @memberof org.dash.platform.dapi.v0 - * @interface IStateTransitionResultFilter - * @property {Uint8Array|null} [txHash] StateTransitionResultFilter txHash - */ - - /** - * Constructs a new StateTransitionResultFilter. - * @memberof org.dash.platform.dapi.v0 - * @classdesc Represents a StateTransitionResultFilter. - * @implements IStateTransitionResultFilter - * @constructor - * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter=} [properties] Properties to set - */ - function StateTransitionResultFilter(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * StateTransitionResultFilter txHash. - * @member {Uint8Array} txHash - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @instance - */ - StateTransitionResultFilter.prototype.txHash = $util.newBuffer([]); - - /** - * Creates a new StateTransitionResultFilter instance using the specified properties. - * @function create - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter=} [properties] Properties to set - * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter instance - */ - StateTransitionResultFilter.create = function create(properties) { - return new StateTransitionResultFilter(properties); - }; - - /** - * Encodes the specified StateTransitionResultFilter message. Does not implicitly {@link org.dash.platform.dapi.v0.StateTransitionResultFilter.verify|verify} messages. - * @function encode - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter} message StateTransitionResultFilter message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - StateTransitionResultFilter.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.txHash != null && Object.hasOwnProperty.call(message, "txHash")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.txHash); - return writer; - }; - - /** - * Encodes the specified StateTransitionResultFilter message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.StateTransitionResultFilter.verify|verify} messages. - * @function encodeDelimited - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter} message StateTransitionResultFilter message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - StateTransitionResultFilter.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a StateTransitionResultFilter message from the specified reader or buffer. - * @function decode - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - StateTransitionResultFilter.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.StateTransitionResultFilter(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.txHash = reader.bytes(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a StateTransitionResultFilter message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - StateTransitionResultFilter.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a StateTransitionResultFilter message. - * @function verify - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - StateTransitionResultFilter.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.txHash != null && message.hasOwnProperty("txHash")) - if (!(message.txHash && typeof message.txHash.length === "number" || $util.isString(message.txHash))) - return "txHash: buffer expected"; - return null; - }; - - /** - * Creates a StateTransitionResultFilter message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {Object.} object Plain object - * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter - */ - StateTransitionResultFilter.fromObject = function fromObject(object) { - if (object instanceof $root.org.dash.platform.dapi.v0.StateTransitionResultFilter) - return object; - var message = new $root.org.dash.platform.dapi.v0.StateTransitionResultFilter(); - if (object.txHash != null) - if (typeof object.txHash === "string") - $util.base64.decode(object.txHash, message.txHash = $util.newBuffer($util.base64.length(object.txHash)), 0); - else if (object.txHash.length >= 0) - message.txHash = object.txHash; - return message; - }; - - /** - * Creates a plain object from a StateTransitionResultFilter message. Also converts values to other types if specified. - * @function toObject - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {org.dash.platform.dapi.v0.StateTransitionResultFilter} message StateTransitionResultFilter - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - StateTransitionResultFilter.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - if (options.bytes === String) - object.txHash = ""; - else { - object.txHash = []; - if (options.bytes !== Array) - object.txHash = $util.newBuffer(object.txHash); - } - if (message.txHash != null && message.hasOwnProperty("txHash")) - object.txHash = options.bytes === String ? $util.base64.encode(message.txHash, 0, message.txHash.length) : options.bytes === Array ? Array.prototype.slice.call(message.txHash) : message.txHash; - return object; - }; - - /** - * Converts this StateTransitionResultFilter to JSON. - * @function toJSON - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @instance - * @returns {Object.} JSON object - */ - StateTransitionResultFilter.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return StateTransitionResultFilter; - })(); - v0.PlatformFilterV0 = (function() { /** * Properties of a PlatformFilterV0. * @memberof org.dash.platform.dapi.v0 * @interface IPlatformFilterV0 - * @property {boolean|null} [all] PlatformFilterV0 all - * @property {boolean|null} [blockCommitted] PlatformFilterV0 blockCommitted - * @property {org.dash.platform.dapi.v0.IStateTransitionResultFilter|null} [stateTransitionResult] PlatformFilterV0 stateTransitionResult + * @property {org.dash.platform.dapi.v0.PlatformFilterV0.IAllEvents|null} [all] PlatformFilterV0 all + * @property {org.dash.platform.dapi.v0.PlatformFilterV0.IBlockCommitted|null} [blockCommitted] PlatformFilterV0 blockCommitted + * @property {org.dash.platform.dapi.v0.PlatformFilterV0.IStateTransitionResultFilter|null} [stateTransitionResult] PlatformFilterV0 stateTransitionResult */ /** @@ -1638,23 +1442,23 @@ $root.org = (function() { /** * PlatformFilterV0 all. - * @member {boolean} all + * @member {org.dash.platform.dapi.v0.PlatformFilterV0.IAllEvents|null|undefined} all * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 * @instance */ - PlatformFilterV0.prototype.all = false; + PlatformFilterV0.prototype.all = null; /** * PlatformFilterV0 blockCommitted. - * @member {boolean} blockCommitted + * @member {org.dash.platform.dapi.v0.PlatformFilterV0.IBlockCommitted|null|undefined} blockCommitted * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 * @instance */ - PlatformFilterV0.prototype.blockCommitted = false; + PlatformFilterV0.prototype.blockCommitted = null; /** * PlatformFilterV0 stateTransitionResult. - * @member {org.dash.platform.dapi.v0.IStateTransitionResultFilter|null|undefined} stateTransitionResult + * @member {org.dash.platform.dapi.v0.PlatformFilterV0.IStateTransitionResultFilter|null|undefined} stateTransitionResult * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 * @instance */ @@ -1699,11 +1503,11 @@ $root.org = (function() { if (!writer) writer = $Writer.create(); if (message.all != null && Object.hasOwnProperty.call(message, "all")) - writer.uint32(/* id 1, wireType 0 =*/8).bool(message.all); + $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.encode(message.all, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.blockCommitted != null && Object.hasOwnProperty.call(message, "blockCommitted")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.blockCommitted); + $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.encode(message.blockCommitted, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.stateTransitionResult != null && Object.hasOwnProperty.call(message, "stateTransitionResult")) - $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.encode(message.stateTransitionResult, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.encode(message.stateTransitionResult, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -1739,13 +1543,13 @@ $root.org = (function() { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.all = reader.bool(); + message.all = $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.decode(reader, reader.uint32()); break; case 2: - message.blockCommitted = reader.bool(); + message.blockCommitted = $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.decode(reader, reader.uint32()); break; case 3: - message.stateTransitionResult = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.decode(reader, reader.uint32()); + message.stateTransitionResult = $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -1785,22 +1589,28 @@ $root.org = (function() { var properties = {}; if (message.all != null && message.hasOwnProperty("all")) { properties.kind = 1; - if (typeof message.all !== "boolean") - return "all: boolean expected"; + { + var error = $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.verify(message.all); + if (error) + return "all." + error; + } } if (message.blockCommitted != null && message.hasOwnProperty("blockCommitted")) { if (properties.kind === 1) return "kind: multiple values"; properties.kind = 1; - if (typeof message.blockCommitted !== "boolean") - return "blockCommitted: boolean expected"; + { + var error = $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.verify(message.blockCommitted); + if (error) + return "blockCommitted." + error; + } } if (message.stateTransitionResult != null && message.hasOwnProperty("stateTransitionResult")) { if (properties.kind === 1) return "kind: multiple values"; properties.kind = 1; { - var error = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.verify(message.stateTransitionResult); + var error = $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.verify(message.stateTransitionResult); if (error) return "stateTransitionResult." + error; } @@ -1820,14 +1630,20 @@ $root.org = (function() { if (object instanceof $root.org.dash.platform.dapi.v0.PlatformFilterV0) return object; var message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0(); - if (object.all != null) - message.all = Boolean(object.all); - if (object.blockCommitted != null) - message.blockCommitted = Boolean(object.blockCommitted); + if (object.all != null) { + if (typeof object.all !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformFilterV0.all: object expected"); + message.all = $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.fromObject(object.all); + } + if (object.blockCommitted != null) { + if (typeof object.blockCommitted !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformFilterV0.blockCommitted: object expected"); + message.blockCommitted = $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.fromObject(object.blockCommitted); + } if (object.stateTransitionResult != null) { if (typeof object.stateTransitionResult !== "object") throw TypeError(".org.dash.platform.dapi.v0.PlatformFilterV0.stateTransitionResult: object expected"); - message.stateTransitionResult = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.fromObject(object.stateTransitionResult); + message.stateTransitionResult = $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.fromObject(object.stateTransitionResult); } return message; }; @@ -1846,17 +1662,17 @@ $root.org = (function() { options = {}; var object = {}; if (message.all != null && message.hasOwnProperty("all")) { - object.all = message.all; + object.all = $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.toObject(message.all, options); if (options.oneofs) object.kind = "all"; } if (message.blockCommitted != null && message.hasOwnProperty("blockCommitted")) { - object.blockCommitted = message.blockCommitted; + object.blockCommitted = $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.toObject(message.blockCommitted, options); if (options.oneofs) object.kind = "blockCommitted"; } if (message.stateTransitionResult != null && message.hasOwnProperty("stateTransitionResult")) { - object.stateTransitionResult = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject(message.stateTransitionResult, options); + object.stateTransitionResult = $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.toObject(message.stateTransitionResult, options); if (options.oneofs) object.kind = "stateTransitionResult"; } @@ -1874,6 +1690,522 @@ $root.org = (function() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + PlatformFilterV0.AllEvents = (function() { + + /** + * Properties of an AllEvents. + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @interface IAllEvents + */ + + /** + * Constructs a new AllEvents. + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @classdesc Represents an AllEvents. + * @implements IAllEvents + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IAllEvents=} [properties] Properties to set + */ + function AllEvents(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new AllEvents instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IAllEvents=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} AllEvents instance + */ + AllEvents.create = function create(properties) { + return new AllEvents(properties); + }; + + /** + * Encodes the specified AllEvents message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IAllEvents} message AllEvents message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AllEvents.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified AllEvents message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IAllEvents} message AllEvents message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AllEvents.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an AllEvents message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} AllEvents + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AllEvents.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an AllEvents message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} AllEvents + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AllEvents.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an AllEvents message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + AllEvents.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates an AllEvents message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} AllEvents + */ + AllEvents.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents) + return object; + return new $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents(); + }; + + /** + * Creates a plain object from an AllEvents message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} message AllEvents + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + AllEvents.toObject = function toObject() { + return {}; + }; + + /** + * Converts this AllEvents to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @instance + * @returns {Object.} JSON object + */ + AllEvents.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return AllEvents; + })(); + + PlatformFilterV0.BlockCommitted = (function() { + + /** + * Properties of a BlockCommitted. + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @interface IBlockCommitted + */ + + /** + * Constructs a new BlockCommitted. + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @classdesc Represents a BlockCommitted. + * @implements IBlockCommitted + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IBlockCommitted=} [properties] Properties to set + */ + function BlockCommitted(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new BlockCommitted instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IBlockCommitted=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} BlockCommitted instance + */ + BlockCommitted.create = function create(properties) { + return new BlockCommitted(properties); + }; + + /** + * Encodes the specified BlockCommitted message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IBlockCommitted} message BlockCommitted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BlockCommitted.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified BlockCommitted message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IBlockCommitted} message BlockCommitted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BlockCommitted.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BlockCommitted message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} BlockCommitted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BlockCommitted.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BlockCommitted message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} BlockCommitted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BlockCommitted.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BlockCommitted message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BlockCommitted.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a BlockCommitted message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} BlockCommitted + */ + BlockCommitted.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted) + return object; + return new $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted(); + }; + + /** + * Creates a plain object from a BlockCommitted message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} message BlockCommitted + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BlockCommitted.toObject = function toObject() { + return {}; + }; + + /** + * Converts this BlockCommitted to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @instance + * @returns {Object.} JSON object + */ + BlockCommitted.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BlockCommitted; + })(); + + PlatformFilterV0.StateTransitionResultFilter = (function() { + + /** + * Properties of a StateTransitionResultFilter. + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @interface IStateTransitionResultFilter + * @property {Uint8Array|null} [txHash] StateTransitionResultFilter txHash + */ + + /** + * Constructs a new StateTransitionResultFilter. + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @classdesc Represents a StateTransitionResultFilter. + * @implements IStateTransitionResultFilter + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IStateTransitionResultFilter=} [properties] Properties to set + */ + function StateTransitionResultFilter(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * StateTransitionResultFilter txHash. + * @member {Uint8Array} txHash + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @instance + */ + StateTransitionResultFilter.prototype.txHash = $util.newBuffer([]); + + /** + * Creates a new StateTransitionResultFilter instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IStateTransitionResultFilter=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} StateTransitionResultFilter instance + */ + StateTransitionResultFilter.create = function create(properties) { + return new StateTransitionResultFilter(properties); + }; + + /** + * Encodes the specified StateTransitionResultFilter message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IStateTransitionResultFilter} message StateTransitionResultFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StateTransitionResultFilter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.txHash != null && Object.hasOwnProperty.call(message, "txHash")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.txHash); + return writer; + }; + + /** + * Encodes the specified StateTransitionResultFilter message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IStateTransitionResultFilter} message StateTransitionResultFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StateTransitionResultFilter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a StateTransitionResultFilter message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} StateTransitionResultFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StateTransitionResultFilter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.txHash = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a StateTransitionResultFilter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} StateTransitionResultFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StateTransitionResultFilter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a StateTransitionResultFilter message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + StateTransitionResultFilter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.txHash != null && message.hasOwnProperty("txHash")) + if (!(message.txHash && typeof message.txHash.length === "number" || $util.isString(message.txHash))) + return "txHash: buffer expected"; + return null; + }; + + /** + * Creates a StateTransitionResultFilter message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} StateTransitionResultFilter + */ + StateTransitionResultFilter.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter(); + if (object.txHash != null) + if (typeof object.txHash === "string") + $util.base64.decode(object.txHash, message.txHash = $util.newBuffer($util.base64.length(object.txHash)), 0); + else if (object.txHash.length >= 0) + message.txHash = object.txHash; + return message; + }; + + /** + * Creates a plain object from a StateTransitionResultFilter message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} message StateTransitionResultFilter + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + StateTransitionResultFilter.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if (options.bytes === String) + object.txHash = ""; + else { + object.txHash = []; + if (options.bytes !== Array) + object.txHash = $util.newBuffer(object.txHash); + } + if (message.txHash != null && message.hasOwnProperty("txHash")) + object.txHash = options.bytes === String ? $util.base64.encode(message.txHash, 0, message.txHash.length) : options.bytes === Array ? Array.prototype.slice.call(message.txHash) : message.txHash; + return object; + }; + + /** + * Converts this StateTransitionResultFilter to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @instance + * @returns {Object.} JSON object + */ + StateTransitionResultFilter.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return StateTransitionResultFilter; + })(); + return PlatformFilterV0; })(); diff --git a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js index f273cf76b47..79a71dc3436 100644 --- a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js +++ b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js @@ -906,211 +906,15 @@ $root.org = (function() { return PlatformSubscriptionResponse; })(); - v0.StateTransitionResultFilter = (function() { - - /** - * Properties of a StateTransitionResultFilter. - * @memberof org.dash.platform.dapi.v0 - * @interface IStateTransitionResultFilter - * @property {Uint8Array|null} [txHash] StateTransitionResultFilter txHash - */ - - /** - * Constructs a new StateTransitionResultFilter. - * @memberof org.dash.platform.dapi.v0 - * @classdesc Represents a StateTransitionResultFilter. - * @implements IStateTransitionResultFilter - * @constructor - * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter=} [properties] Properties to set - */ - function StateTransitionResultFilter(properties) { - if (properties) - for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) - if (properties[keys[i]] != null) - this[keys[i]] = properties[keys[i]]; - } - - /** - * StateTransitionResultFilter txHash. - * @member {Uint8Array} txHash - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @instance - */ - StateTransitionResultFilter.prototype.txHash = $util.newBuffer([]); - - /** - * Creates a new StateTransitionResultFilter instance using the specified properties. - * @function create - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter=} [properties] Properties to set - * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter instance - */ - StateTransitionResultFilter.create = function create(properties) { - return new StateTransitionResultFilter(properties); - }; - - /** - * Encodes the specified StateTransitionResultFilter message. Does not implicitly {@link org.dash.platform.dapi.v0.StateTransitionResultFilter.verify|verify} messages. - * @function encode - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter} message StateTransitionResultFilter message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - StateTransitionResultFilter.encode = function encode(message, writer) { - if (!writer) - writer = $Writer.create(); - if (message.txHash != null && Object.hasOwnProperty.call(message, "txHash")) - writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.txHash); - return writer; - }; - - /** - * Encodes the specified StateTransitionResultFilter message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.StateTransitionResultFilter.verify|verify} messages. - * @function encodeDelimited - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {org.dash.platform.dapi.v0.IStateTransitionResultFilter} message StateTransitionResultFilter message or plain object to encode - * @param {$protobuf.Writer} [writer] Writer to encode to - * @returns {$protobuf.Writer} Writer - */ - StateTransitionResultFilter.encodeDelimited = function encodeDelimited(message, writer) { - return this.encode(message, writer).ldelim(); - }; - - /** - * Decodes a StateTransitionResultFilter message from the specified reader or buffer. - * @function decode - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @param {number} [length] Message length if known beforehand - * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - StateTransitionResultFilter.decode = function decode(reader, length) { - if (!(reader instanceof $Reader)) - reader = $Reader.create(reader); - var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.StateTransitionResultFilter(); - while (reader.pos < end) { - var tag = reader.uint32(); - switch (tag >>> 3) { - case 1: - message.txHash = reader.bytes(); - break; - default: - reader.skipType(tag & 7); - break; - } - } - return message; - }; - - /** - * Decodes a StateTransitionResultFilter message from the specified reader or buffer, length delimited. - * @function decodeDelimited - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from - * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter - * @throws {Error} If the payload is not a reader or valid buffer - * @throws {$protobuf.util.ProtocolError} If required fields are missing - */ - StateTransitionResultFilter.decodeDelimited = function decodeDelimited(reader) { - if (!(reader instanceof $Reader)) - reader = new $Reader(reader); - return this.decode(reader, reader.uint32()); - }; - - /** - * Verifies a StateTransitionResultFilter message. - * @function verify - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {Object.} message Plain object to verify - * @returns {string|null} `null` if valid, otherwise the reason why it is not - */ - StateTransitionResultFilter.verify = function verify(message) { - if (typeof message !== "object" || message === null) - return "object expected"; - if (message.txHash != null && message.hasOwnProperty("txHash")) - if (!(message.txHash && typeof message.txHash.length === "number" || $util.isString(message.txHash))) - return "txHash: buffer expected"; - return null; - }; - - /** - * Creates a StateTransitionResultFilter message from a plain object. Also converts values to their respective internal types. - * @function fromObject - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {Object.} object Plain object - * @returns {org.dash.platform.dapi.v0.StateTransitionResultFilter} StateTransitionResultFilter - */ - StateTransitionResultFilter.fromObject = function fromObject(object) { - if (object instanceof $root.org.dash.platform.dapi.v0.StateTransitionResultFilter) - return object; - var message = new $root.org.dash.platform.dapi.v0.StateTransitionResultFilter(); - if (object.txHash != null) - if (typeof object.txHash === "string") - $util.base64.decode(object.txHash, message.txHash = $util.newBuffer($util.base64.length(object.txHash)), 0); - else if (object.txHash.length >= 0) - message.txHash = object.txHash; - return message; - }; - - /** - * Creates a plain object from a StateTransitionResultFilter message. Also converts values to other types if specified. - * @function toObject - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @static - * @param {org.dash.platform.dapi.v0.StateTransitionResultFilter} message StateTransitionResultFilter - * @param {$protobuf.IConversionOptions} [options] Conversion options - * @returns {Object.} Plain object - */ - StateTransitionResultFilter.toObject = function toObject(message, options) { - if (!options) - options = {}; - var object = {}; - if (options.defaults) - if (options.bytes === String) - object.txHash = ""; - else { - object.txHash = []; - if (options.bytes !== Array) - object.txHash = $util.newBuffer(object.txHash); - } - if (message.txHash != null && message.hasOwnProperty("txHash")) - object.txHash = options.bytes === String ? $util.base64.encode(message.txHash, 0, message.txHash.length) : options.bytes === Array ? Array.prototype.slice.call(message.txHash) : message.txHash; - return object; - }; - - /** - * Converts this StateTransitionResultFilter to JSON. - * @function toJSON - * @memberof org.dash.platform.dapi.v0.StateTransitionResultFilter - * @instance - * @returns {Object.} JSON object - */ - StateTransitionResultFilter.prototype.toJSON = function toJSON() { - return this.constructor.toObject(this, $protobuf.util.toJSONOptions); - }; - - return StateTransitionResultFilter; - })(); - v0.PlatformFilterV0 = (function() { /** * Properties of a PlatformFilterV0. * @memberof org.dash.platform.dapi.v0 * @interface IPlatformFilterV0 - * @property {boolean|null} [all] PlatformFilterV0 all - * @property {boolean|null} [blockCommitted] PlatformFilterV0 blockCommitted - * @property {org.dash.platform.dapi.v0.IStateTransitionResultFilter|null} [stateTransitionResult] PlatformFilterV0 stateTransitionResult + * @property {org.dash.platform.dapi.v0.PlatformFilterV0.IAllEvents|null} [all] PlatformFilterV0 all + * @property {org.dash.platform.dapi.v0.PlatformFilterV0.IBlockCommitted|null} [blockCommitted] PlatformFilterV0 blockCommitted + * @property {org.dash.platform.dapi.v0.PlatformFilterV0.IStateTransitionResultFilter|null} [stateTransitionResult] PlatformFilterV0 stateTransitionResult */ /** @@ -1130,23 +934,23 @@ $root.org = (function() { /** * PlatformFilterV0 all. - * @member {boolean} all + * @member {org.dash.platform.dapi.v0.PlatformFilterV0.IAllEvents|null|undefined} all * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 * @instance */ - PlatformFilterV0.prototype.all = false; + PlatformFilterV0.prototype.all = null; /** * PlatformFilterV0 blockCommitted. - * @member {boolean} blockCommitted + * @member {org.dash.platform.dapi.v0.PlatformFilterV0.IBlockCommitted|null|undefined} blockCommitted * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 * @instance */ - PlatformFilterV0.prototype.blockCommitted = false; + PlatformFilterV0.prototype.blockCommitted = null; /** * PlatformFilterV0 stateTransitionResult. - * @member {org.dash.platform.dapi.v0.IStateTransitionResultFilter|null|undefined} stateTransitionResult + * @member {org.dash.platform.dapi.v0.PlatformFilterV0.IStateTransitionResultFilter|null|undefined} stateTransitionResult * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 * @instance */ @@ -1191,11 +995,11 @@ $root.org = (function() { if (!writer) writer = $Writer.create(); if (message.all != null && Object.hasOwnProperty.call(message, "all")) - writer.uint32(/* id 1, wireType 0 =*/8).bool(message.all); + $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.encode(message.all, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim(); if (message.blockCommitted != null && Object.hasOwnProperty.call(message, "blockCommitted")) - writer.uint32(/* id 2, wireType 0 =*/16).bool(message.blockCommitted); + $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.encode(message.blockCommitted, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); if (message.stateTransitionResult != null && Object.hasOwnProperty.call(message, "stateTransitionResult")) - $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.encode(message.stateTransitionResult, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); + $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.encode(message.stateTransitionResult, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim(); return writer; }; @@ -1231,13 +1035,13 @@ $root.org = (function() { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.all = reader.bool(); + message.all = $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.decode(reader, reader.uint32()); break; case 2: - message.blockCommitted = reader.bool(); + message.blockCommitted = $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.decode(reader, reader.uint32()); break; case 3: - message.stateTransitionResult = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.decode(reader, reader.uint32()); + message.stateTransitionResult = $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.decode(reader, reader.uint32()); break; default: reader.skipType(tag & 7); @@ -1277,22 +1081,28 @@ $root.org = (function() { var properties = {}; if (message.all != null && message.hasOwnProperty("all")) { properties.kind = 1; - if (typeof message.all !== "boolean") - return "all: boolean expected"; + { + var error = $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.verify(message.all); + if (error) + return "all." + error; + } } if (message.blockCommitted != null && message.hasOwnProperty("blockCommitted")) { if (properties.kind === 1) return "kind: multiple values"; properties.kind = 1; - if (typeof message.blockCommitted !== "boolean") - return "blockCommitted: boolean expected"; + { + var error = $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.verify(message.blockCommitted); + if (error) + return "blockCommitted." + error; + } } if (message.stateTransitionResult != null && message.hasOwnProperty("stateTransitionResult")) { if (properties.kind === 1) return "kind: multiple values"; properties.kind = 1; { - var error = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.verify(message.stateTransitionResult); + var error = $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.verify(message.stateTransitionResult); if (error) return "stateTransitionResult." + error; } @@ -1312,14 +1122,20 @@ $root.org = (function() { if (object instanceof $root.org.dash.platform.dapi.v0.PlatformFilterV0) return object; var message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0(); - if (object.all != null) - message.all = Boolean(object.all); - if (object.blockCommitted != null) - message.blockCommitted = Boolean(object.blockCommitted); + if (object.all != null) { + if (typeof object.all !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformFilterV0.all: object expected"); + message.all = $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.fromObject(object.all); + } + if (object.blockCommitted != null) { + if (typeof object.blockCommitted !== "object") + throw TypeError(".org.dash.platform.dapi.v0.PlatformFilterV0.blockCommitted: object expected"); + message.blockCommitted = $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.fromObject(object.blockCommitted); + } if (object.stateTransitionResult != null) { if (typeof object.stateTransitionResult !== "object") throw TypeError(".org.dash.platform.dapi.v0.PlatformFilterV0.stateTransitionResult: object expected"); - message.stateTransitionResult = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.fromObject(object.stateTransitionResult); + message.stateTransitionResult = $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.fromObject(object.stateTransitionResult); } return message; }; @@ -1338,17 +1154,17 @@ $root.org = (function() { options = {}; var object = {}; if (message.all != null && message.hasOwnProperty("all")) { - object.all = message.all; + object.all = $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.toObject(message.all, options); if (options.oneofs) object.kind = "all"; } if (message.blockCommitted != null && message.hasOwnProperty("blockCommitted")) { - object.blockCommitted = message.blockCommitted; + object.blockCommitted = $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.toObject(message.blockCommitted, options); if (options.oneofs) object.kind = "blockCommitted"; } if (message.stateTransitionResult != null && message.hasOwnProperty("stateTransitionResult")) { - object.stateTransitionResult = $root.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject(message.stateTransitionResult, options); + object.stateTransitionResult = $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.toObject(message.stateTransitionResult, options); if (options.oneofs) object.kind = "stateTransitionResult"; } @@ -1366,6 +1182,522 @@ $root.org = (function() { return this.constructor.toObject(this, $protobuf.util.toJSONOptions); }; + PlatformFilterV0.AllEvents = (function() { + + /** + * Properties of an AllEvents. + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @interface IAllEvents + */ + + /** + * Constructs a new AllEvents. + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @classdesc Represents an AllEvents. + * @implements IAllEvents + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IAllEvents=} [properties] Properties to set + */ + function AllEvents(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new AllEvents instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IAllEvents=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} AllEvents instance + */ + AllEvents.create = function create(properties) { + return new AllEvents(properties); + }; + + /** + * Encodes the specified AllEvents message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IAllEvents} message AllEvents message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AllEvents.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified AllEvents message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IAllEvents} message AllEvents message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + AllEvents.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes an AllEvents message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} AllEvents + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AllEvents.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes an AllEvents message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} AllEvents + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + AllEvents.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies an AllEvents message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + AllEvents.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates an AllEvents message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} AllEvents + */ + AllEvents.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents) + return object; + return new $root.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents(); + }; + + /** + * Creates a plain object from an AllEvents message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} message AllEvents + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + AllEvents.toObject = function toObject() { + return {}; + }; + + /** + * Converts this AllEvents to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents + * @instance + * @returns {Object.} JSON object + */ + AllEvents.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return AllEvents; + })(); + + PlatformFilterV0.BlockCommitted = (function() { + + /** + * Properties of a BlockCommitted. + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @interface IBlockCommitted + */ + + /** + * Constructs a new BlockCommitted. + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @classdesc Represents a BlockCommitted. + * @implements IBlockCommitted + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IBlockCommitted=} [properties] Properties to set + */ + function BlockCommitted(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * Creates a new BlockCommitted instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IBlockCommitted=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} BlockCommitted instance + */ + BlockCommitted.create = function create(properties) { + return new BlockCommitted(properties); + }; + + /** + * Encodes the specified BlockCommitted message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IBlockCommitted} message BlockCommitted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BlockCommitted.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + return writer; + }; + + /** + * Encodes the specified BlockCommitted message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IBlockCommitted} message BlockCommitted message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + BlockCommitted.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a BlockCommitted message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} BlockCommitted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BlockCommitted.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a BlockCommitted message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} BlockCommitted + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + BlockCommitted.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a BlockCommitted message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + BlockCommitted.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + return null; + }; + + /** + * Creates a BlockCommitted message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} BlockCommitted + */ + BlockCommitted.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted) + return object; + return new $root.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted(); + }; + + /** + * Creates a plain object from a BlockCommitted message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} message BlockCommitted + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + BlockCommitted.toObject = function toObject() { + return {}; + }; + + /** + * Converts this BlockCommitted to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted + * @instance + * @returns {Object.} JSON object + */ + BlockCommitted.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return BlockCommitted; + })(); + + PlatformFilterV0.StateTransitionResultFilter = (function() { + + /** + * Properties of a StateTransitionResultFilter. + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @interface IStateTransitionResultFilter + * @property {Uint8Array|null} [txHash] StateTransitionResultFilter txHash + */ + + /** + * Constructs a new StateTransitionResultFilter. + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0 + * @classdesc Represents a StateTransitionResultFilter. + * @implements IStateTransitionResultFilter + * @constructor + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IStateTransitionResultFilter=} [properties] Properties to set + */ + function StateTransitionResultFilter(properties) { + if (properties) + for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i) + if (properties[keys[i]] != null) + this[keys[i]] = properties[keys[i]]; + } + + /** + * StateTransitionResultFilter txHash. + * @member {Uint8Array} txHash + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @instance + */ + StateTransitionResultFilter.prototype.txHash = $util.newBuffer([]); + + /** + * Creates a new StateTransitionResultFilter instance using the specified properties. + * @function create + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IStateTransitionResultFilter=} [properties] Properties to set + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} StateTransitionResultFilter instance + */ + StateTransitionResultFilter.create = function create(properties) { + return new StateTransitionResultFilter(properties); + }; + + /** + * Encodes the specified StateTransitionResultFilter message. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.verify|verify} messages. + * @function encode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IStateTransitionResultFilter} message StateTransitionResultFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StateTransitionResultFilter.encode = function encode(message, writer) { + if (!writer) + writer = $Writer.create(); + if (message.txHash != null && Object.hasOwnProperty.call(message, "txHash")) + writer.uint32(/* id 1, wireType 2 =*/10).bytes(message.txHash); + return writer; + }; + + /** + * Encodes the specified StateTransitionResultFilter message, length delimited. Does not implicitly {@link org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.verify|verify} messages. + * @function encodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.IStateTransitionResultFilter} message StateTransitionResultFilter message or plain object to encode + * @param {$protobuf.Writer} [writer] Writer to encode to + * @returns {$protobuf.Writer} Writer + */ + StateTransitionResultFilter.encodeDelimited = function encodeDelimited(message, writer) { + return this.encode(message, writer).ldelim(); + }; + + /** + * Decodes a StateTransitionResultFilter message from the specified reader or buffer. + * @function decode + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @param {number} [length] Message length if known beforehand + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} StateTransitionResultFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StateTransitionResultFilter.decode = function decode(reader, length) { + if (!(reader instanceof $Reader)) + reader = $Reader.create(reader); + var end = length === undefined ? reader.len : reader.pos + length, message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter(); + while (reader.pos < end) { + var tag = reader.uint32(); + switch (tag >>> 3) { + case 1: + message.txHash = reader.bytes(); + break; + default: + reader.skipType(tag & 7); + break; + } + } + return message; + }; + + /** + * Decodes a StateTransitionResultFilter message from the specified reader or buffer, length delimited. + * @function decodeDelimited + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} StateTransitionResultFilter + * @throws {Error} If the payload is not a reader or valid buffer + * @throws {$protobuf.util.ProtocolError} If required fields are missing + */ + StateTransitionResultFilter.decodeDelimited = function decodeDelimited(reader) { + if (!(reader instanceof $Reader)) + reader = new $Reader(reader); + return this.decode(reader, reader.uint32()); + }; + + /** + * Verifies a StateTransitionResultFilter message. + * @function verify + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {Object.} message Plain object to verify + * @returns {string|null} `null` if valid, otherwise the reason why it is not + */ + StateTransitionResultFilter.verify = function verify(message) { + if (typeof message !== "object" || message === null) + return "object expected"; + if (message.txHash != null && message.hasOwnProperty("txHash")) + if (!(message.txHash && typeof message.txHash.length === "number" || $util.isString(message.txHash))) + return "txHash: buffer expected"; + return null; + }; + + /** + * Creates a StateTransitionResultFilter message from a plain object. Also converts values to their respective internal types. + * @function fromObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {Object.} object Plain object + * @returns {org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} StateTransitionResultFilter + */ + StateTransitionResultFilter.fromObject = function fromObject(object) { + if (object instanceof $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter) + return object; + var message = new $root.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter(); + if (object.txHash != null) + if (typeof object.txHash === "string") + $util.base64.decode(object.txHash, message.txHash = $util.newBuffer($util.base64.length(object.txHash)), 0); + else if (object.txHash.length >= 0) + message.txHash = object.txHash; + return message; + }; + + /** + * Creates a plain object from a StateTransitionResultFilter message. Also converts values to other types if specified. + * @function toObject + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @static + * @param {org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} message StateTransitionResultFilter + * @param {$protobuf.IConversionOptions} [options] Conversion options + * @returns {Object.} Plain object + */ + StateTransitionResultFilter.toObject = function toObject(message, options) { + if (!options) + options = {}; + var object = {}; + if (options.defaults) + if (options.bytes === String) + object.txHash = ""; + else { + object.txHash = []; + if (options.bytes !== Array) + object.txHash = $util.newBuffer(object.txHash); + } + if (message.txHash != null && message.hasOwnProperty("txHash")) + object.txHash = options.bytes === String ? $util.base64.encode(message.txHash, 0, message.txHash.length) : options.bytes === Array ? Array.prototype.slice.call(message.txHash) : message.txHash; + return object; + }; + + /** + * Converts this StateTransitionResultFilter to JSON. + * @function toJSON + * @memberof org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter + * @instance + * @returns {Object.} JSON object + */ + StateTransitionResultFilter.prototype.toJSON = function toJSON() { + return this.constructor.toObject(this, $protobuf.util.toJSONOptions); + }; + + return StateTransitionResultFilter; + })(); + return PlatformFilterV0; })(); diff --git a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js index c90de5fcd4b..cc1993357ad 100644 --- a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js +++ b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js @@ -467,7 +467,10 @@ goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase', n goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.VersionCase', null, { proto }); @@ -481,7 +484,6 @@ goog.exportSymbol('proto.org.dash.platform.dapi.v0.SecurityLevelMap', null, { pr goog.exportSymbol('proto.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.SpecificKeys', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.StateTransitionBroadcastError', null, { proto }); -goog.exportSymbol('proto.org.dash.platform.dapi.v0.StateTransitionResultFilter', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.VersionCase', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0', null, { proto }); @@ -583,16 +585,37 @@ if (goog.DEBUG && !COMPILED) { * @extends {jspb.Message} * @constructor */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter = function(opt_data) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0 = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformFilterV0, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformFilterV0.displayName = 'proto.org.dash.platform.dapi.v0.PlatformFilterV0'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents = function(opt_data) { jspb.Message.initialize(this, opt_data, 0, -1, null, null); }; -goog.inherits(proto.org.dash.platform.dapi.v0.StateTransitionResultFilter, jspb.Message); +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents, jspb.Message); if (goog.DEBUG && !COMPILED) { /** * @public * @override */ - proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.displayName = 'proto.org.dash.platform.dapi.v0.StateTransitionResultFilter'; + proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.displayName = 'proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents'; } /** * Generated by JsPbCodeGenerator. @@ -604,16 +627,37 @@ if (goog.DEBUG && !COMPILED) { * @extends {jspb.Message} * @constructor */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0 = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); }; -goog.inherits(proto.org.dash.platform.dapi.v0.PlatformFilterV0, jspb.Message); +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted, jspb.Message); if (goog.DEBUG && !COMPILED) { /** * @public * @override */ - proto.org.dash.platform.dapi.v0.PlatformFilterV0.displayName = 'proto.org.dash.platform.dapi.v0.PlatformFilterV0'; + proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.displayName = 'proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.displayName = 'proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter'; } /** * Generated by JsPbCodeGenerator. @@ -7777,6 +7821,33 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.hasV0 = f +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_ = [[1,2,3]]; + +/** + * @enum {number} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase = { + KIND_NOT_SET: 0, + ALL: 1, + BLOCK_COMMITTED: 2, + STATE_TRANSITION_RESULT: 3 +}; + +/** + * @return {proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getKindCase = function() { + return /** @type {proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase} */(jspb.Message.computeOneofCase(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0])); +}; + if (jspb.Message.GENERATE_TO_OBJECT) { @@ -7792,8 +7863,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.toObject = function(opt_includeInstance) { - return proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject(opt_includeInstance, this); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(opt_includeInstance, this); }; @@ -7802,13 +7873,15 @@ proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.toObject = * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} msg The msg instance to transform. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject = function(includeInstance, msg) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject = function(includeInstance, msg) { var f, obj = { - txHash: msg.getTxHash_asB64() + all: (f = msg.getAll()) && proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.toObject(includeInstance, f), + blockCommitted: (f = msg.getBlockCommitted()) && proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.toObject(includeInstance, f), + stateTransitionResult: (f = msg.getStateTransitionResult()) && proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.toObject(includeInstance, f) }; if (includeInstance) { @@ -7822,23 +7895,23 @@ proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject = function( /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinary = function(bytes) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.org.dash.platform.dapi.v0.StateTransitionResultFilter; - return proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFromReader(msg, reader); + var msg = new proto.org.dash.platform.dapi.v0.PlatformFilterV0; + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} msg The message object to deserialize into. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFromReader = function(msg, reader) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -7846,8 +7919,19 @@ proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFro var field = reader.getFieldNumber(); switch (field) { case 1: - var value = /** @type {!Uint8Array} */ (reader.readBytes()); - msg.setTxHash(value); + var value = new proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.deserializeBinaryFromReader); + msg.setAll(value); + break; + case 2: + var value = new proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.deserializeBinaryFromReader); + msg.setBlockCommitted(value); + break; + case 3: + var value = new proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.deserializeBinaryFromReader); + msg.setStateTransitionResult(value); break; default: reader.skipField(); @@ -7862,9 +7946,9 @@ proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFro * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.serializeBinary = function() { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.serializeBinaryToWriter(this, writer); + proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -7872,112 +7956,244 @@ proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.serializeB /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} message + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.serializeBinaryToWriter = function(message, writer) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = /** @type {!(string|Uint8Array)} */ (jspb.Message.getField(message, 1)); + f = message.getAll(); if (f != null) { - writer.writeBytes( + writer.writeMessage( 1, - f + f, + proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.serializeBinaryToWriter + ); + } + f = message.getBlockCommitted(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.serializeBinaryToWriter + ); + } + f = message.getStateTransitionResult(); + if (f != null) { + writer.writeMessage( + 3, + f, + proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.serializeBinaryToWriter ); } }; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { /** - * optional bytes tx_hash = 1; - * @return {string} + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.getTxHash = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.toObject(opt_includeInstance, this); }; /** - * optional bytes tx_hash = 1; - * This is a type-conversion wrapper around `getTxHash()` - * @return {string} + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.getTxHash_asB64 = function() { - return /** @type {string} */ (jspb.Message.bytesAsB64( - this.getTxHash())); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; }; +} /** - * optional bytes tx_hash = 1; - * Note that Uint8Array is not supported on all browsers. - * @see http://caniuse.com/Uint8Array - * This is a type-conversion wrapper around `getTxHash()` + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents; + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.getTxHash_asU8 = function() { - return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8( - this.getTxHash())); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); }; /** - * @param {!(string|Uint8Array)} value - * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} returns this + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.setTxHash = function(value) { - return jspb.Message.setField(this, 1, value); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.serializeBinaryToWriter = function(message, writer) { + var f = undefined; }; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { /** - * Clears the field making it undefined. - * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} returns this + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.clearTxHash = function() { - return jspb.Message.setField(this, 1, undefined); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.toObject(opt_includeInstance, this); }; /** - * Returns whether this field is set. - * @return {boolean} + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.hasTxHash = function() { - return jspb.Message.getField(this, 1) != null; +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; }; +} +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted; + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.deserializeBinaryFromReader(msg, reader); +}; + /** - * Oneof group definitions for this message. Each group defines the field - * numbers belonging to that group. When of these fields' value is set, all - * other fields in the group are cleared. During deserialization, if multiple - * fields are encountered for a group, only the last value seen will be kept. - * @private {!Array>} - * @const + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_ = [[1,2,3]]; +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + /** - * @enum {number} + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase = { - KIND_NOT_SET: 0, - ALL: 1, - BLOCK_COMMITTED: 2, - STATE_TRANSITION_RESULT: 3 +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); }; + /** - * @return {proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase} + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getKindCase = function() { - return /** @type {proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase} */(jspb.Message.computeOneofCase(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0])); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.serializeBinaryToWriter = function(message, writer) { + var f = undefined; }; + + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. @@ -7991,8 +8207,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.toObject = function(opt_includeInstance) { - return proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(opt_includeInstance, this); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.toObject(opt_includeInstance, this); }; @@ -8001,15 +8217,13 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.toObject = function(o * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} msg The msg instance to transform. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject = function(includeInstance, msg) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.toObject = function(includeInstance, msg) { var f, obj = { - all: jspb.Message.getBooleanFieldWithDefault(msg, 1, false), - blockCommitted: jspb.Message.getBooleanFieldWithDefault(msg, 2, false), - stateTransitionResult: (f = msg.getStateTransitionResult()) && proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject(includeInstance, f) + txHash: msg.getTxHash_asB64() }; if (includeInstance) { @@ -8023,23 +8237,23 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject = function(includeInst /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinary = function(bytes) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.org.dash.platform.dapi.v0.PlatformFilterV0; - return proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader(msg, reader); + var msg = new proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter; + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} msg The message object to deserialize into. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader = function(msg, reader) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -8047,17 +8261,8 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader = f var field = reader.getFieldNumber(); switch (field) { case 1: - var value = /** @type {boolean} */ (reader.readBool()); - msg.setAll(value); - break; - case 2: - var value = /** @type {boolean} */ (reader.readBool()); - msg.setBlockCommitted(value); - break; - case 3: - var value = new proto.org.dash.platform.dapi.v0.StateTransitionResultFilter; - reader.readMessage(value,proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFromReader); - msg.setStateTransitionResult(value); + var value = /** @type {!Uint8Array} */ (reader.readBytes()); + msg.setTxHash(value); break; default: reader.skipField(); @@ -8072,9 +8277,9 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader = f * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.serializeBinary = function() { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter(this, writer); + proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -8082,61 +8287,107 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.serializeBinary = fun /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} message + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter = function(message, writer) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = /** @type {boolean} */ (jspb.Message.getField(message, 1)); + f = /** @type {!(string|Uint8Array)} */ (jspb.Message.getField(message, 1)); if (f != null) { - writer.writeBool( + writer.writeBytes( 1, f ); } - f = /** @type {boolean} */ (jspb.Message.getField(message, 2)); - if (f != null) { - writer.writeBool( - 2, - f - ); - } - f = message.getStateTransitionResult(); - if (f != null) { - writer.writeMessage( - 3, - f, - proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.serializeBinaryToWriter - ); - } }; /** - * optional bool all = 1; + * optional bytes tx_hash = 1; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.getTxHash = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * optional bytes tx_hash = 1; + * This is a type-conversion wrapper around `getTxHash()` + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.getTxHash_asB64 = function() { + return /** @type {string} */ (jspb.Message.bytesAsB64( + this.getTxHash())); +}; + + +/** + * optional bytes tx_hash = 1; + * Note that Uint8Array is not supported on all browsers. + * @see http://caniuse.com/Uint8Array + * This is a type-conversion wrapper around `getTxHash()` + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.getTxHash_asU8 = function() { + return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8( + this.getTxHash())); +}; + + +/** + * @param {!(string|Uint8Array)} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.setTxHash = function(value) { + return jspb.Message.setField(this, 1, value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.clearTxHash = function() { + return jspb.Message.setField(this, 1, undefined); +}; + + +/** + * Returns whether this field is set. * @return {boolean} */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.hasTxHash = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional AllEvents all = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} + */ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getAll = function() { - return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false)); + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents, 1)); }; /** - * @param {boolean} value + * @param {?proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents|undefined} value * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this - */ +*/ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.setAll = function(value) { - return jspb.Message.setOneofField(this, 1, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); + return jspb.Message.setOneofWrapperField(this, 1, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); }; /** - * Clears the field making it undefined. + * Clears the message field making it undefined. * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this */ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.clearAll = function() { - return jspb.Message.setOneofField(this, 1, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], undefined); + return this.setAll(undefined); }; @@ -8150,29 +8401,30 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.hasAll = function() { /** - * optional bool block_committed = 2; - * @return {boolean} + * optional BlockCommitted block_committed = 2; + * @return {?proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} */ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getBlockCommitted = function() { - return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false)); + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted, 2)); }; /** - * @param {boolean} value + * @param {?proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted|undefined} value * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this - */ +*/ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.setBlockCommitted = function(value) { - return jspb.Message.setOneofField(this, 2, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); + return jspb.Message.setOneofWrapperField(this, 2, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); }; /** - * Clears the field making it undefined. + * Clears the message field making it undefined. * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this */ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.clearBlockCommitted = function() { - return jspb.Message.setOneofField(this, 2, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], undefined); + return this.setBlockCommitted(undefined); }; @@ -8187,16 +8439,16 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.hasBlockCommitted = f /** * optional StateTransitionResultFilter state_transition_result = 3; - * @return {?proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} + * @return {?proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} */ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getStateTransitionResult = function() { - return /** @type{?proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} */ ( - jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.StateTransitionResultFilter, 3)); + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter, 3)); }; /** - * @param {?proto.org.dash.platform.dapi.v0.StateTransitionResultFilter|undefined} value + * @param {?proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter|undefined} value * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this */ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.setStateTransitionResult = function(value) { diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h index 13d41c2de14..6ff860e35d3 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h @@ -234,6 +234,9 @@ CF_EXTERN_C_BEGIN @class PlatformEventV0_Keepalive; @class PlatformEventV0_StateTransitionFinalized; @class PlatformFilterV0; +@class PlatformFilterV0_AllEvents; +@class PlatformFilterV0_BlockCommitted; +@class PlatformFilterV0_StateTransitionResultFilter; @class PlatformSubscriptionRequest_PlatformSubscriptionRequestV0; @class PlatformSubscriptionResponse_PlatformSubscriptionResponseV0; @class Proof; @@ -242,7 +245,6 @@ CF_EXTERN_C_BEGIN @class SecurityLevelMap; @class SpecificKeys; @class StateTransitionBroadcastError; -@class StateTransitionResultFilter; @class WaitForStateTransitionResultRequest_WaitForStateTransitionResultRequestV0; @class WaitForStateTransitionResultResponse_WaitForStateTransitionResultResponseV0; @@ -540,25 +542,6 @@ GPB_FINAL @interface PlatformSubscriptionResponse_PlatformSubscriptionResponseV0 @end -#pragma mark - StateTransitionResultFilter - -typedef GPB_ENUM(StateTransitionResultFilter_FieldNumber) { - StateTransitionResultFilter_FieldNumber_TxHash = 1, -}; - -/** - * Initial placeholder filter and event to be refined during integration - * Filter for StateTransitionResult events - **/ -GPB_FINAL @interface StateTransitionResultFilter : GPBMessage - -/** When set, only match StateTransitionResult events for this tx hash. */ -@property(nonatomic, readwrite, copy, null_resettable) NSData *txHash; -/** Test to see if @c txHash has been set. */ -@property(nonatomic, readwrite) BOOL hasTxHash; - -@end - #pragma mark - PlatformFilterV0 typedef GPB_ENUM(PlatformFilterV0_FieldNumber) { @@ -574,18 +557,21 @@ typedef GPB_ENUM(PlatformFilterV0_Kind_OneOfCase) { PlatformFilterV0_Kind_OneOfCase_StateTransitionResult = 3, }; +/** + * Criteria that must be met by platform event to be propagated to the user. + **/ GPB_FINAL @interface PlatformFilterV0 : GPBMessage @property(nonatomic, readonly) PlatformFilterV0_Kind_OneOfCase kindOneOfCase; /** subscribe to all platform events */ -@property(nonatomic, readwrite) BOOL all; +@property(nonatomic, readwrite, strong, null_resettable) PlatformFilterV0_AllEvents *all; /** subscribe to BlockCommitted events only */ -@property(nonatomic, readwrite) BOOL blockCommitted; +@property(nonatomic, readwrite, strong, null_resettable) PlatformFilterV0_BlockCommitted *blockCommitted; /** subscribe to StateTransitionResult events (optionally filtered by */ -@property(nonatomic, readwrite, strong, null_resettable) StateTransitionResultFilter *stateTransitionResult; +@property(nonatomic, readwrite, strong, null_resettable) PlatformFilterV0_StateTransitionResultFilter *stateTransitionResult; @end @@ -594,6 +580,42 @@ GPB_FINAL @interface PlatformFilterV0 : GPBMessage **/ void PlatformFilterV0_ClearKindOneOfCase(PlatformFilterV0 *message); +#pragma mark - PlatformFilterV0_AllEvents + +/** + * Include all events generated by the Platform; experimental + **/ +GPB_FINAL @interface PlatformFilterV0_AllEvents : GPBMessage + +@end + +#pragma mark - PlatformFilterV0_BlockCommitted + +/** + * Notify about every Platform (Tenderdash) block that get committed (mined) + **/ +GPB_FINAL @interface PlatformFilterV0_BlockCommitted : GPBMessage + +@end + +#pragma mark - PlatformFilterV0_StateTransitionResultFilter + +typedef GPB_ENUM(PlatformFilterV0_StateTransitionResultFilter_FieldNumber) { + PlatformFilterV0_StateTransitionResultFilter_FieldNumber_TxHash = 1, +}; + +/** + * Filter for StateTransitionResult events, by state transition hash + **/ +GPB_FINAL @interface PlatformFilterV0_StateTransitionResultFilter : GPBMessage + +/** When set, only match StateTransitionResult events for this tx hash. */ +@property(nonatomic, readwrite, copy, null_resettable) NSData *txHash; +/** Test to see if @c txHash has been set. */ +@property(nonatomic, readwrite) BOOL hasTxHash; + +@end + #pragma mark - PlatformEventV0 typedef GPB_ENUM(PlatformEventV0_FieldNumber) { diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m index 6cd2d9b3d48..f5123b32ea4 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m @@ -323,6 +323,9 @@ GPBObjCClassDeclaration(PlatformEventV0_Keepalive); GPBObjCClassDeclaration(PlatformEventV0_StateTransitionFinalized); GPBObjCClassDeclaration(PlatformFilterV0); +GPBObjCClassDeclaration(PlatformFilterV0_AllEvents); +GPBObjCClassDeclaration(PlatformFilterV0_BlockCommitted); +GPBObjCClassDeclaration(PlatformFilterV0_StateTransitionResultFilter); GPBObjCClassDeclaration(PlatformSubscriptionRequest); GPBObjCClassDeclaration(PlatformSubscriptionRequest_PlatformSubscriptionRequestV0); GPBObjCClassDeclaration(PlatformSubscriptionResponse); @@ -333,7 +336,6 @@ GPBObjCClassDeclaration(SecurityLevelMap); GPBObjCClassDeclaration(SpecificKeys); GPBObjCClassDeclaration(StateTransitionBroadcastError); -GPBObjCClassDeclaration(StateTransitionResultFilter); GPBObjCClassDeclaration(WaitForStateTransitionResultRequest); GPBObjCClassDeclaration(WaitForStateTransitionResultRequest_WaitForStateTransitionResultRequestV0); GPBObjCClassDeclaration(WaitForStateTransitionResultResponse); @@ -632,51 +634,6 @@ + (GPBDescriptor *)descriptor { @end -#pragma mark - StateTransitionResultFilter - -@implementation StateTransitionResultFilter - -@dynamic hasTxHash, txHash; - -typedef struct StateTransitionResultFilter__storage_ { - uint32_t _has_storage_[1]; - NSData *txHash; -} StateTransitionResultFilter__storage_; - -// This method is threadsafe because it is initially called -// in +initialize for each subclass. -+ (GPBDescriptor *)descriptor { - static GPBDescriptor *descriptor = nil; - if (!descriptor) { - static GPBMessageFieldDescription fields[] = { - { - .name = "txHash", - .dataTypeSpecific.clazz = Nil, - .number = StateTransitionResultFilter_FieldNumber_TxHash, - .hasIndex = 0, - .offset = (uint32_t)offsetof(StateTransitionResultFilter__storage_, txHash), - .flags = GPBFieldOptional, - .dataType = GPBDataTypeBytes, - }, - }; - GPBDescriptor *localDescriptor = - [GPBDescriptor allocDescriptorForClass:[StateTransitionResultFilter class] - rootClass:[PlatformRoot class] - file:PlatformRoot_FileDescriptor() - fields:fields - fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) - storageSize:sizeof(StateTransitionResultFilter__storage_) - flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; - #if defined(DEBUG) && DEBUG - NSAssert(descriptor == nil, @"Startup recursed!"); - #endif // DEBUG - descriptor = localDescriptor; - } - return descriptor; -} - -@end - #pragma mark - PlatformFilterV0 @implementation PlatformFilterV0 @@ -688,7 +645,9 @@ @implementation PlatformFilterV0 typedef struct PlatformFilterV0__storage_ { uint32_t _has_storage_[2]; - StateTransitionResultFilter *stateTransitionResult; + PlatformFilterV0_AllEvents *all; + PlatformFilterV0_BlockCommitted *blockCommitted; + PlatformFilterV0_StateTransitionResultFilter *stateTransitionResult; } PlatformFilterV0__storage_; // This method is threadsafe because it is initially called @@ -699,25 +658,25 @@ + (GPBDescriptor *)descriptor { static GPBMessageFieldDescription fields[] = { { .name = "all", - .dataTypeSpecific.clazz = Nil, + .dataTypeSpecific.clazz = GPBObjCClass(PlatformFilterV0_AllEvents), .number = PlatformFilterV0_FieldNumber_All, .hasIndex = -1, - .offset = 0, // Stored in _has_storage_ to save space. + .offset = (uint32_t)offsetof(PlatformFilterV0__storage_, all), .flags = GPBFieldOptional, - .dataType = GPBDataTypeBool, + .dataType = GPBDataTypeMessage, }, { .name = "blockCommitted", - .dataTypeSpecific.clazz = Nil, + .dataTypeSpecific.clazz = GPBObjCClass(PlatformFilterV0_BlockCommitted), .number = PlatformFilterV0_FieldNumber_BlockCommitted, .hasIndex = -1, - .offset = 1, // Stored in _has_storage_ to save space. + .offset = (uint32_t)offsetof(PlatformFilterV0__storage_, blockCommitted), .flags = GPBFieldOptional, - .dataType = GPBDataTypeBool, + .dataType = GPBDataTypeMessage, }, { .name = "stateTransitionResult", - .dataTypeSpecific.clazz = GPBObjCClass(StateTransitionResultFilter), + .dataTypeSpecific.clazz = GPBObjCClass(PlatformFilterV0_StateTransitionResultFilter), .number = PlatformFilterV0_FieldNumber_StateTransitionResult, .hasIndex = -1, .offset = (uint32_t)offsetof(PlatformFilterV0__storage_, stateTransitionResult), @@ -754,6 +713,118 @@ void PlatformFilterV0_ClearKindOneOfCase(PlatformFilterV0 *message) { GPBOneofDescriptor *oneof = [descriptor.oneofs objectAtIndex:0]; GPBClearOneof(message, oneof); } +#pragma mark - PlatformFilterV0_AllEvents + +@implementation PlatformFilterV0_AllEvents + + +typedef struct PlatformFilterV0_AllEvents__storage_ { + uint32_t _has_storage_[1]; +} PlatformFilterV0_AllEvents__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformFilterV0_AllEvents class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:NULL + fieldCount:0 + storageSize:sizeof(PlatformFilterV0_AllEvents__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + [localDescriptor setupContainingMessageClass:GPBObjCClass(PlatformFilterV0)]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + +#pragma mark - PlatformFilterV0_BlockCommitted + +@implementation PlatformFilterV0_BlockCommitted + + +typedef struct PlatformFilterV0_BlockCommitted__storage_ { + uint32_t _has_storage_[1]; +} PlatformFilterV0_BlockCommitted__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformFilterV0_BlockCommitted class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:NULL + fieldCount:0 + storageSize:sizeof(PlatformFilterV0_BlockCommitted__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + [localDescriptor setupContainingMessageClass:GPBObjCClass(PlatformFilterV0)]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + +#pragma mark - PlatformFilterV0_StateTransitionResultFilter + +@implementation PlatformFilterV0_StateTransitionResultFilter + +@dynamic hasTxHash, txHash; + +typedef struct PlatformFilterV0_StateTransitionResultFilter__storage_ { + uint32_t _has_storage_[1]; + NSData *txHash; +} PlatformFilterV0_StateTransitionResultFilter__storage_; + +// This method is threadsafe because it is initially called +// in +initialize for each subclass. ++ (GPBDescriptor *)descriptor { + static GPBDescriptor *descriptor = nil; + if (!descriptor) { + static GPBMessageFieldDescription fields[] = { + { + .name = "txHash", + .dataTypeSpecific.clazz = Nil, + .number = PlatformFilterV0_StateTransitionResultFilter_FieldNumber_TxHash, + .hasIndex = 0, + .offset = (uint32_t)offsetof(PlatformFilterV0_StateTransitionResultFilter__storage_, txHash), + .flags = GPBFieldOptional, + .dataType = GPBDataTypeBytes, + }, + }; + GPBDescriptor *localDescriptor = + [GPBDescriptor allocDescriptorForClass:[PlatformFilterV0_StateTransitionResultFilter class] + rootClass:[PlatformRoot class] + file:PlatformRoot_FileDescriptor() + fields:fields + fieldCount:(uint32_t)(sizeof(fields) / sizeof(GPBMessageFieldDescription)) + storageSize:sizeof(PlatformFilterV0_StateTransitionResultFilter__storage_) + flags:(GPBDescriptorInitializationFlags)(GPBDescriptorInitializationFlag_UsesClassRefs | GPBDescriptorInitializationFlag_Proto3OptionalKnown)]; + [localDescriptor setupContainingMessageClass:GPBObjCClass(PlatformFilterV0)]; + #if defined(DEBUG) && DEBUG + NSAssert(descriptor == nil, @"Startup recursed!"); + #endif // DEBUG + descriptor = localDescriptor; + } + return descriptor; +} + +@end + #pragma mark - PlatformEventV0 @implementation PlatformEventV0 diff --git a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py index 87bf60e0f25..d51ffa533bb 100644 --- a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py +++ b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py @@ -23,7 +23,7 @@ syntax='proto3', serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x0eplatform.proto\x12\x19org.dash.platform.dapi.v0\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xfd\x01\n\x1bPlatformSubscriptionRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0H\x00\x1ao\n\x1dPlatformSubscriptionRequestV0\x12;\n\x06\x66ilter\x18\x01 \x01(\x0b\x32+.org.dash.platform.dapi.v0.PlatformFilterV0\x12\x11\n\tkeepalive\x18\x02 \x01(\rB\t\n\x07version\"\x8c\x02\n\x1cPlatformSubscriptionResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0H\x00\x1a{\n\x1ePlatformSubscriptionResponseV0\x12\x1e\n\x16\x63lient_subscription_id\x18\x01 \x01(\t\x12\x39\n\x05\x65vent\x18\x02 \x01(\x0b\x32*.org.dash.platform.dapi.v0.PlatformEventV0B\t\n\x07version\"?\n\x1bStateTransitionResultFilter\x12\x14\n\x07tx_hash\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\n\n\x08_tx_hash\"\x9f\x01\n\x10PlatformFilterV0\x12\r\n\x03\x61ll\x18\x01 \x01(\x08H\x00\x12\x19\n\x0f\x62lock_committed\x18\x02 \x01(\x08H\x00\x12Y\n\x17state_transition_result\x18\x03 \x01(\x0b\x32\x36.org.dash.platform.dapi.v0.StateTransitionResultFilterH\x00\x42\x06\n\x04kind\"\xe5\x04\n\x0fPlatformEventV0\x12T\n\x0f\x62lock_committed\x18\x01 \x01(\x0b\x32\x39.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommittedH\x00\x12i\n\x1astate_transition_finalized\x18\x02 \x01(\x0b\x32\x43.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalizedH\x00\x12I\n\tkeepalive\x18\x03 \x01(\x0b\x32\x34.org.dash.platform.dapi.v0.PlatformEventV0.KeepaliveH\x00\x1aO\n\rBlockMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x13\n\x07time_ms\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rblock_id_hash\x18\x03 \x01(\x0c\x1aj\n\x0e\x42lockCommitted\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x10\n\x08tx_count\x18\x02 \x01(\r\x1as\n\x18StateTransitionFinalized\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x0f\n\x07tx_hash\x18\x02 \x01(\x0c\x1a\x0b\n\tKeepaliveB\x07\n\x05\x65vent\"\x81\x01\n\x05Proof\x12\x15\n\rgrovedb_proof\x18\x01 \x01(\x0c\x12\x13\n\x0bquorum_hash\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\r\n\x05round\x18\x04 \x01(\r\x12\x15\n\rblock_id_hash\x18\x05 \x01(\x0c\x12\x13\n\x0bquorum_type\x18\x06 \x01(\r\"\x98\x01\n\x10ResponseMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12 \n\x18\x63ore_chain_locked_height\x18\x02 \x01(\r\x12\r\n\x05\x65poch\x18\x03 \x01(\r\x12\x13\n\x07time_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x18\n\x10protocol_version\x18\x05 \x01(\r\x12\x10\n\x08\x63hain_id\x18\x06 \x01(\t\"L\n\x1dStateTransitionBroadcastError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\";\n\x1f\x42roadcastStateTransitionRequest\x12\x18\n\x10state_transition\x18\x01 \x01(\x0c\"\"\n BroadcastStateTransitionResponse\"\xa4\x01\n\x12GetIdentityRequest\x12P\n\x02v0\x18\x01 \x01(\x0b\x32\x42.org.dash.platform.dapi.v0.GetIdentityRequest.GetIdentityRequestV0H\x00\x1a\x31\n\x14GetIdentityRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xc1\x01\n\x17GetIdentityNonceRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityNonceRequest.GetIdentityNonceRequestV0H\x00\x1a?\n\x19GetIdentityNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xf6\x01\n\x1fGetIdentityContractNonceRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest.GetIdentityContractNonceRequestV0H\x00\x1a\\\n!GetIdentityContractNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xc0\x01\n\x19GetIdentityBalanceRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetIdentityBalanceRequest.GetIdentityBalanceRequestV0H\x00\x1a\x38\n\x1bGetIdentityBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xec\x01\n$GetIdentityBalanceAndRevisionRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest.GetIdentityBalanceAndRevisionRequestV0H\x00\x1a\x43\n&GetIdentityBalanceAndRevisionRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9e\x02\n\x13GetIdentityResponse\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetIdentityResponse.GetIdentityResponseV0H\x00\x1a\xa7\x01\n\x15GetIdentityResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbc\x02\n\x18GetIdentityNonceResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetIdentityNonceResponse.GetIdentityNonceResponseV0H\x00\x1a\xb6\x01\n\x1aGetIdentityNonceResponseV0\x12\x1c\n\x0eidentity_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xe5\x02\n GetIdentityContractNonceResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse.GetIdentityContractNonceResponseV0H\x00\x1a\xc7\x01\n\"GetIdentityContractNonceResponseV0\x12%\n\x17identity_contract_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n\x1aGetIdentityBalanceResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetIdentityBalanceResponse.GetIdentityBalanceResponseV0H\x00\x1a\xb1\x01\n\x1cGetIdentityBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb1\x04\n%GetIdentityBalanceAndRevisionResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0H\x00\x1a\x84\x03\n\'GetIdentityBalanceAndRevisionResponseV0\x12\x9b\x01\n\x14\x62\x61lance_and_revision\x18\x01 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0.BalanceAndRevisionH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x12\x42\x61lanceAndRevision\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x14\n\x08revision\x18\x02 \x01(\x04\x42\x02\x30\x01\x42\x08\n\x06resultB\t\n\x07version\"\xd1\x01\n\x0eKeyRequestType\x12\x36\n\x08\x61ll_keys\x18\x01 \x01(\x0b\x32\".org.dash.platform.dapi.v0.AllKeysH\x00\x12@\n\rspecific_keys\x18\x02 \x01(\x0b\x32\'.org.dash.platform.dapi.v0.SpecificKeysH\x00\x12:\n\nsearch_key\x18\x03 \x01(\x0b\x32$.org.dash.platform.dapi.v0.SearchKeyH\x00\x42\t\n\x07request\"\t\n\x07\x41llKeys\"\x1f\n\x0cSpecificKeys\x12\x0f\n\x07key_ids\x18\x01 \x03(\r\"\xb6\x01\n\tSearchKey\x12I\n\x0bpurpose_map\x18\x01 \x03(\x0b\x32\x34.org.dash.platform.dapi.v0.SearchKey.PurposeMapEntry\x1a^\n\x0fPurposeMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.org.dash.platform.dapi.v0.SecurityLevelMap:\x02\x38\x01\"\xbf\x02\n\x10SecurityLevelMap\x12]\n\x12security_level_map\x18\x01 \x03(\x0b\x32\x41.org.dash.platform.dapi.v0.SecurityLevelMap.SecurityLevelMapEntry\x1aw\n\x15SecurityLevelMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12M\n\x05value\x18\x02 \x01(\x0e\x32>.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType:\x02\x38\x01\"S\n\x12KeyKindRequestType\x12\x1f\n\x1b\x43URRENT_KEY_OF_KIND_REQUEST\x10\x00\x12\x1c\n\x18\x41LL_KEYS_OF_KIND_REQUEST\x10\x01\"\xda\x02\n\x16GetIdentityKeysRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetIdentityKeysRequest.GetIdentityKeysRequestV0H\x00\x1a\xda\x01\n\x18GetIdentityKeysRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12?\n\x0crequest_type\x18\x02 \x01(\x0b\x32).org.dash.platform.dapi.v0.KeyRequestType\x12+\n\x05limit\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\x99\x03\n\x17GetIdentityKeysResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0H\x00\x1a\x96\x02\n\x19GetIdentityKeysResponseV0\x12\x61\n\x04keys\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0.KeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1a\n\x04Keys\x12\x12\n\nkeys_bytes\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xef\x02\n GetIdentitiesContractKeysRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest.GetIdentitiesContractKeysRequestV0H\x00\x1a\xd1\x01\n\"GetIdentitiesContractKeysRequestV0\x12\x16\n\x0eidentities_ids\x18\x01 \x03(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\x1f\n\x12\x64ocument_type_name\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x08purposes\x18\x04 \x03(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x15\n\x13_document_type_nameB\t\n\x07version\"\xdf\x06\n!GetIdentitiesContractKeysResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0H\x00\x1a\xbe\x05\n#GetIdentitiesContractKeysResponseV0\x12\x8a\x01\n\x0fidentities_keys\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentitiesKeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aY\n\x0bPurposeKeys\x12\x36\n\x07purpose\x18\x01 \x01(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\x12\n\nkeys_bytes\x18\x02 \x03(\x0c\x1a\x9f\x01\n\x0cIdentityKeys\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12z\n\x04keys\x18\x02 \x03(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.PurposeKeys\x1a\x90\x01\n\x0eIdentitiesKeys\x12~\n\x07\x65ntries\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentityKeysB\x08\n\x06resultB\t\n\x07version\"\xa4\x02\n*GetEvonodesProposedEpochBlocksByIdsRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest.GetEvonodesProposedEpochBlocksByIdsRequestV0H\x00\x1ah\n,GetEvonodesProposedEpochBlocksByIdsRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0b\n\x03ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x08\n\x06_epochB\t\n\x07version\"\x92\x06\n&GetEvonodesProposedEpochBlocksResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0H\x00\x1a\xe2\x04\n(GetEvonodesProposedEpochBlocksResponseV0\x12\xb1\x01\n#evonodes_proposed_block_counts_info\x18\x01 \x01(\x0b\x32\x81\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodesProposedBlocksH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x15\x45vonodeProposedBlocks\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x11\n\x05\x63ount\x18\x02 \x01(\x04\x42\x02\x30\x01\x1a\xc4\x01\n\x16\x45vonodesProposedBlocks\x12\xa9\x01\n\x1e\x65vonodes_proposed_block_counts\x18\x01 \x03(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodeProposedBlocksB\x08\n\x06resultB\t\n\x07version\"\xf2\x02\n,GetEvonodesProposedEpochBlocksByRangeRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest.GetEvonodesProposedEpochBlocksByRangeRequestV0H\x00\x1a\xaf\x01\n.GetEvonodesProposedEpochBlocksByRangeRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x02 \x01(\rH\x02\x88\x01\x01\x12\x15\n\x0bstart_after\x18\x03 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x04 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x07\n\x05startB\x08\n\x06_epochB\x08\n\x06_limitB\t\n\x07version\"\xcd\x01\n\x1cGetIdentitiesBalancesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest.GetIdentitiesBalancesRequestV0H\x00\x1a<\n\x1eGetIdentitiesBalancesRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9f\x05\n\x1dGetIdentitiesBalancesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0H\x00\x1a\x8a\x04\n\x1fGetIdentitiesBalancesResponseV0\x12\x8a\x01\n\x13identities_balances\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentitiesBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aL\n\x0fIdentityBalance\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x8f\x01\n\x12IdentitiesBalances\x12y\n\x07\x65ntries\x18\x01 \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentityBalanceB\x08\n\x06resultB\t\n\x07version\"\xb4\x01\n\x16GetDataContractRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetDataContractRequest.GetDataContractRequestV0H\x00\x1a\x35\n\x18GetDataContractRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xb3\x02\n\x17GetDataContractResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractResponse.GetDataContractResponseV0H\x00\x1a\xb0\x01\n\x19GetDataContractResponseV0\x12\x17\n\rdata_contract\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb9\x01\n\x17GetDataContractsRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractsRequest.GetDataContractsRequestV0H\x00\x1a\x37\n\x19GetDataContractsRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xcf\x04\n\x18GetDataContractsResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetDataContractsResponse.GetDataContractsResponseV0H\x00\x1a[\n\x11\x44\x61taContractEntry\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x32\n\rdata_contract\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x1au\n\rDataContracts\x12\x64\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32\x45.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractEntry\x1a\xf5\x01\n\x1aGetDataContractsResponseV0\x12[\n\x0e\x64\x61ta_contracts\x18\x01 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc5\x02\n\x1dGetDataContractHistoryRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetDataContractHistoryRequest.GetDataContractHistoryRequestV0H\x00\x1a\xb0\x01\n\x1fGetDataContractHistoryRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0bstart_at_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xb2\x05\n\x1eGetDataContractHistoryResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0H\x00\x1a\x9a\x04\n GetDataContractHistoryResponseV0\x12\x8f\x01\n\x15\x64\x61ta_contract_history\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a;\n\x18\x44\x61taContractHistoryEntry\x12\x10\n\x04\x64\x61te\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05value\x18\x02 \x01(\x0c\x1a\xaa\x01\n\x13\x44\x61taContractHistory\x12\x92\x01\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32s.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryEntryB\x08\n\x06resultB\t\n\x07version\"\xb2\x02\n\x13GetDocumentsRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetDocumentsRequest.GetDocumentsRequestV0H\x00\x1a\xbb\x01\n\x15GetDocumentsRequestV0\x12\x18\n\x10\x64\x61ta_contract_id\x18\x01 \x01(\x0c\x12\x15\n\rdocument_type\x18\x02 \x01(\t\x12\r\n\x05where\x18\x03 \x01(\x0c\x12\x10\n\x08order_by\x18\x04 \x01(\x0c\x12\r\n\x05limit\x18\x05 \x01(\r\x12\x15\n\x0bstart_after\x18\x06 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x07 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x08 \x01(\x08\x42\x07\n\x05startB\t\n\x07version\"\x95\x03\n\x14GetDocumentsResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0H\x00\x1a\x9b\x02\n\x16GetDocumentsResponseV0\x12\x65\n\tdocuments\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0.DocumentsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1e\n\tDocuments\x12\x11\n\tdocuments\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xed\x01\n!GetIdentityByPublicKeyHashRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest.GetIdentityByPublicKeyHashRequestV0H\x00\x1aM\n#GetIdentityByPublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xda\x02\n\"GetIdentityByPublicKeyHashResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse.GetIdentityByPublicKeyHashResponseV0H\x00\x1a\xb6\x01\n$GetIdentityByPublicKeyHashResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n*GetIdentityByNonUniquePublicKeyHashRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest.GetIdentityByNonUniquePublicKeyHashRequestV0H\x00\x1a\x80\x01\n,GetIdentityByNonUniquePublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\x18\n\x0bstart_after\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x0e\n\x0c_start_afterB\t\n\x07version\"\xd6\x06\n+GetIdentityByNonUniquePublicKeyHashResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0H\x00\x1a\x96\x05\n-GetIdentityByNonUniquePublicKeyHashResponseV0\x12\x9a\x01\n\x08identity\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityResponseH\x00\x12\x9d\x01\n\x05proof\x18\x02 \x01(\x0b\x32\x8b\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityProvedResponseH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x36\n\x10IdentityResponse\x12\x15\n\x08identity\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x0b\n\t_identity\x1a\xa6\x01\n\x16IdentityProvedResponse\x12P\n&grovedb_identity_public_key_hash_proof\x18\x01 \x01(\x0b\x32 .org.dash.platform.dapi.v0.Proof\x12!\n\x14identity_proof_bytes\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x17\n\x15_identity_proof_bytesB\x08\n\x06resultB\t\n\x07version\"\xfb\x01\n#WaitForStateTransitionResultRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0H\x00\x1aU\n%WaitForStateTransitionResultRequestV0\x12\x1d\n\x15state_transition_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x99\x03\n$WaitForStateTransitionResultResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0H\x00\x1a\xef\x01\n&WaitForStateTransitionResultResponseV0\x12I\n\x05\x65rror\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.StateTransitionBroadcastErrorH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x19GetConsensusParamsRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetConsensusParamsRequest.GetConsensusParamsRequestV0H\x00\x1a<\n\x1bGetConsensusParamsRequestV0\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9c\x04\n\x1aGetConsensusParamsResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetConsensusParamsResponse.GetConsensusParamsResponseV0H\x00\x1aP\n\x14\x43onsensusParamsBlock\x12\x11\n\tmax_bytes\x18\x01 \x01(\t\x12\x0f\n\x07max_gas\x18\x02 \x01(\t\x12\x14\n\x0ctime_iota_ms\x18\x03 \x01(\t\x1a\x62\n\x17\x43onsensusParamsEvidence\x12\x1a\n\x12max_age_num_blocks\x18\x01 \x01(\t\x12\x18\n\x10max_age_duration\x18\x02 \x01(\t\x12\x11\n\tmax_bytes\x18\x03 \x01(\t\x1a\xda\x01\n\x1cGetConsensusParamsResponseV0\x12Y\n\x05\x62lock\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsBlock\x12_\n\x08\x65vidence\x18\x02 \x01(\x0b\x32M.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsEvidenceB\t\n\x07version\"\xe4\x01\n%GetProtocolVersionUpgradeStateRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest.GetProtocolVersionUpgradeStateRequestV0H\x00\x1a\x38\n\'GetProtocolVersionUpgradeStateRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xb5\x05\n&GetProtocolVersionUpgradeStateResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0H\x00\x1a\x85\x04\n(GetProtocolVersionUpgradeStateResponseV0\x12\x87\x01\n\x08versions\x18\x01 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x96\x01\n\x08Versions\x12\x89\x01\n\x08versions\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionEntry\x1a:\n\x0cVersionEntry\x12\x16\n\x0eversion_number\x18\x01 \x01(\r\x12\x12\n\nvote_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xa3\x02\n*GetProtocolVersionUpgradeVoteStatusRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest.GetProtocolVersionUpgradeVoteStatusRequestV0H\x00\x1ag\n,GetProtocolVersionUpgradeVoteStatusRequestV0\x12\x19\n\x11start_pro_tx_hash\x18\x01 \x01(\x0c\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xef\x05\n+GetProtocolVersionUpgradeVoteStatusResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0H\x00\x1a\xaf\x04\n-GetProtocolVersionUpgradeVoteStatusResponseV0\x12\x98\x01\n\x08versions\x18\x01 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignalsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xaf\x01\n\x0eVersionSignals\x12\x9c\x01\n\x0fversion_signals\x18\x01 \x03(\x0b\x32\x82\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignal\x1a\x35\n\rVersionSignal\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07version\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xf5\x01\n\x14GetEpochsInfoRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetEpochsInfoRequest.GetEpochsInfoRequestV0H\x00\x1a|\n\x16GetEpochsInfoRequestV0\x12\x31\n\x0bstart_epoch\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\x11\n\tascending\x18\x03 \x01(\x08\x12\r\n\x05prove\x18\x04 \x01(\x08\x42\t\n\x07version\"\x99\x05\n\x15GetEpochsInfoResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0H\x00\x1a\x9c\x04\n\x17GetEpochsInfoResponseV0\x12\x65\n\x06\x65pochs\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1au\n\nEpochInfos\x12g\n\x0b\x65poch_infos\x18\x01 \x03(\x0b\x32R.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfo\x1a\xa6\x01\n\tEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x16\n\nstart_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xbf\x02\n\x1dGetFinalizedEpochInfosRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest.GetFinalizedEpochInfosRequestV0H\x00\x1a\xaa\x01\n\x1fGetFinalizedEpochInfosRequestV0\x12\x19\n\x11start_epoch_index\x18\x01 \x01(\r\x12\"\n\x1astart_epoch_index_included\x18\x02 \x01(\x08\x12\x17\n\x0f\x65nd_epoch_index\x18\x03 \x01(\r\x12 \n\x18\x65nd_epoch_index_included\x18\x04 \x01(\x08\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xbd\t\n\x1eGetFinalizedEpochInfosResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0H\x00\x1a\xa5\x08\n GetFinalizedEpochInfosResponseV0\x12\x80\x01\n\x06\x65pochs\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xa4\x01\n\x13\x46inalizedEpochInfos\x12\x8c\x01\n\x15\x66inalized_epoch_infos\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfo\x1a\x9f\x04\n\x12\x46inalizedEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x1c\n\x10\x66irst_block_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\r\x12!\n\x15total_blocks_in_epoch\x18\x07 \x01(\x04\x42\x02\x30\x01\x12*\n\"next_epoch_start_core_block_height\x18\x08 \x01(\r\x12!\n\x15total_processing_fees\x18\t \x01(\x04\x42\x02\x30\x01\x12*\n\x1etotal_distributed_storage_fees\x18\n \x01(\x04\x42\x02\x30\x01\x12&\n\x1atotal_created_storage_fees\x18\x0b \x01(\x04\x42\x02\x30\x01\x12\x1e\n\x12\x63ore_block_rewards\x18\x0c \x01(\x04\x42\x02\x30\x01\x12\x81\x01\n\x0f\x62lock_proposers\x18\r \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.BlockProposer\x1a\x39\n\rBlockProposer\x12\x13\n\x0bproposer_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x62lock_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xde\x04\n\x1cGetContestedResourcesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0H\x00\x1a\xcc\x03\n\x1eGetContestedResourcesRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x1a\n\x12start_index_values\x18\x04 \x03(\x0c\x12\x18\n\x10\x65nd_index_values\x18\x05 \x03(\x0c\x12\x89\x01\n\x13start_at_value_info\x18\x06 \x01(\x0b\x32g.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0.StartAtValueInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1a\x45\n\x10StartAtValueInfo\x12\x13\n\x0bstart_value\x18\x01 \x01(\x0c\x12\x1c\n\x14start_value_included\x18\x02 \x01(\x08\x42\x16\n\x14_start_at_value_infoB\x08\n\x06_countB\t\n\x07version\"\x88\x04\n\x1dGetContestedResourcesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0H\x00\x1a\xf3\x02\n\x1fGetContestedResourcesResponseV0\x12\x95\x01\n\x19\x63ontested_resource_values\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0.ContestedResourceValuesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a<\n\x17\x43ontestedResourceValues\x12!\n\x19\x63ontested_resource_values\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x05\n\x1cGetVotePollsByEndDateRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0H\x00\x1a\xc0\x04\n\x1eGetVotePollsByEndDateRequestV0\x12\x84\x01\n\x0fstart_time_info\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.StartAtTimeInfoH\x00\x88\x01\x01\x12\x80\x01\n\rend_time_info\x18\x02 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.EndAtTimeInfoH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x11\n\tascending\x18\x05 \x01(\x08\x12\r\n\x05prove\x18\x06 \x01(\x08\x1aI\n\x0fStartAtTimeInfo\x12\x19\n\rstart_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13start_time_included\x18\x02 \x01(\x08\x1a\x43\n\rEndAtTimeInfo\x12\x17\n\x0b\x65nd_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x65nd_time_included\x18\x02 \x01(\x08\x42\x12\n\x10_start_time_infoB\x10\n\x0e_end_time_infoB\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07version\"\x83\x06\n\x1dGetVotePollsByEndDateResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0H\x00\x1a\xee\x04\n\x1fGetVotePollsByEndDateResponseV0\x12\x9c\x01\n\x18vote_polls_by_timestamps\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestampsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aV\n\x1eSerializedVotePollsByTimestamp\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x15serialized_vote_polls\x18\x02 \x03(\x0c\x1a\xd7\x01\n\x1fSerializedVotePollsByTimestamps\x12\x99\x01\n\x18vote_polls_by_timestamps\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestamp\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xff\x06\n$GetContestedResourceVoteStateRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0H\x00\x1a\xd5\x05\n&GetContestedResourceVoteStateRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x86\x01\n\x0bresult_type\x18\x05 \x01(\x0e\x32q.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.ResultType\x12\x36\n.allow_include_locked_and_abstaining_vote_tally\x18\x06 \x01(\x08\x12\xa3\x01\n\x18start_at_identifier_info\x18\x07 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x08 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\"I\n\nResultType\x12\r\n\tDOCUMENTS\x10\x00\x12\x0e\n\nVOTE_TALLY\x10\x01\x12\x1c\n\x18\x44OCUMENTS_AND_VOTE_TALLY\x10\x02\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\x94\x0c\n%GetContestedResourceVoteStateResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0H\x00\x1a\xe7\n\n\'GetContestedResourceVoteStateResponseV0\x12\xae\x01\n\x1d\x63ontested_resource_contenders\x18\x01 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.ContestedResourceContendersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xda\x03\n\x10\x46inishedVoteInfo\x12\xad\x01\n\x15\x66inished_vote_outcome\x18\x01 \x01(\x0e\x32\x8d\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfo.FinishedVoteOutcome\x12\x1f\n\x12won_by_identity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12$\n\x18\x66inished_at_block_height\x18\x03 \x01(\x04\x42\x02\x30\x01\x12%\n\x1d\x66inished_at_core_block_height\x18\x04 \x01(\r\x12%\n\x19\x66inished_at_block_time_ms\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x66inished_at_epoch\x18\x06 \x01(\r\"O\n\x13\x46inishedVoteOutcome\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\n\n\x06LOCKED\x10\x01\x12\x16\n\x12NO_PREVIOUS_WINNER\x10\x02\x42\x15\n\x13_won_by_identity_id\x1a\xc4\x03\n\x1b\x43ontestedResourceContenders\x12\x86\x01\n\ncontenders\x18\x01 \x03(\x0b\x32r.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.Contender\x12\x1f\n\x12\x61\x62stain_vote_tally\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0flock_vote_tally\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x9a\x01\n\x12\x66inished_vote_info\x18\x04 \x01(\x0b\x32y.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfoH\x02\x88\x01\x01\x42\x15\n\x13_abstain_vote_tallyB\x12\n\x10_lock_vote_tallyB\x15\n\x13_finished_vote_info\x1ak\n\tContender\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x17\n\nvote_count\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08\x64ocument\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x42\r\n\x0b_vote_countB\x0b\n\t_documentB\x08\n\x06resultB\t\n\x07version\"\xd5\x05\n,GetContestedResourceVotersForIdentityRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0H\x00\x1a\x92\x04\n.GetContestedResourceVotersForIdentityRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x15\n\rcontestant_id\x18\x05 \x01(\x0c\x12\xb4\x01\n\x18start_at_identifier_info\x18\x06 \x01(\x0b\x32\x8c\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\xf1\x04\n-GetContestedResourceVotersForIdentityResponse\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0H\x00\x1a\xab\x03\n/GetContestedResourceVotersForIdentityResponseV0\x12\xb6\x01\n\x19\x63ontested_resource_voters\x18\x01 \x01(\x0b\x32\x90\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0.ContestedResourceVotersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x43\n\x17\x43ontestedResourceVoters\x12\x0e\n\x06voters\x18\x01 \x03(\x0c\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xad\x05\n(GetContestedResourceIdentityVotesRequest\x12|\n\x02v0\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0H\x00\x1a\xf7\x03\n*GetContestedResourceIdentityVotesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0forder_ascending\x18\x04 \x01(\x08\x12\xae\x01\n\x1astart_at_vote_poll_id_info\x18\x05 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0.StartAtVotePollIdInfoH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x1a\x61\n\x15StartAtVotePollIdInfo\x12 \n\x18start_at_poll_identifier\x18\x01 \x01(\x0c\x12&\n\x1estart_poll_identifier_included\x18\x02 \x01(\x08\x42\x1d\n\x1b_start_at_vote_poll_id_infoB\t\n\x07version\"\xc8\n\n)GetContestedResourceIdentityVotesResponse\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0H\x00\x1a\x8f\t\n+GetContestedResourceIdentityVotesResponseV0\x12\xa1\x01\n\x05votes\x18\x01 \x01(\x0b\x32\x8f\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVotesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xf7\x01\n\x1e\x43ontestedResourceIdentityVotes\x12\xba\x01\n!contested_resource_identity_votes\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVote\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x1a\xad\x02\n\x12ResourceVoteChoice\x12\xad\x01\n\x10vote_choice_type\x18\x01 \x01(\x0e\x32\x92\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoice.VoteChoiceType\x12\x18\n\x0bidentity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\"=\n\x0eVoteChoiceType\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\x0b\n\x07\x41\x42STAIN\x10\x01\x12\x08\n\x04LOCK\x10\x02\x42\x0e\n\x0c_identity_id\x1a\x95\x02\n\x1d\x43ontestedResourceIdentityVote\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\'\n\x1fserialized_index_storage_values\x18\x03 \x03(\x0c\x12\x99\x01\n\x0bvote_choice\x18\x04 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoiceB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n%GetPrefundedSpecializedBalanceRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest.GetPrefundedSpecializedBalanceRequestV0H\x00\x1a\x44\n\'GetPrefundedSpecializedBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xed\x02\n&GetPrefundedSpecializedBalanceResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse.GetPrefundedSpecializedBalanceResponseV0H\x00\x1a\xbd\x01\n(GetPrefundedSpecializedBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xd0\x01\n GetTotalCreditsInPlatformRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest.GetTotalCreditsInPlatformRequestV0H\x00\x1a\x33\n\"GetTotalCreditsInPlatformRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xd9\x02\n!GetTotalCreditsInPlatformResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse.GetTotalCreditsInPlatformResponseV0H\x00\x1a\xb8\x01\n#GetTotalCreditsInPlatformResponseV0\x12\x15\n\x07\x63redits\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x16GetPathElementsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetPathElementsRequest.GetPathElementsRequestV0H\x00\x1a\x45\n\x18GetPathElementsRequestV0\x12\x0c\n\x04path\x18\x01 \x03(\x0c\x12\x0c\n\x04keys\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xa3\x03\n\x17GetPathElementsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0H\x00\x1a\xa0\x02\n\x19GetPathElementsResponseV0\x12i\n\x08\x65lements\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0.ElementsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1c\n\x08\x45lements\x12\x10\n\x08\x65lements\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\x81\x01\n\x10GetStatusRequest\x12L\n\x02v0\x18\x01 \x01(\x0b\x32>.org.dash.platform.dapi.v0.GetStatusRequest.GetStatusRequestV0H\x00\x1a\x14\n\x12GetStatusRequestV0B\t\n\x07version\"\xe4\x10\n\x11GetStatusResponse\x12N\n\x02v0\x18\x01 \x01(\x0b\x32@.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0H\x00\x1a\xf3\x0f\n\x13GetStatusResponseV0\x12Y\n\x07version\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version\x12S\n\x04node\x18\x02 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Node\x12U\n\x05\x63hain\x18\x03 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Chain\x12Y\n\x07network\x18\x04 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Network\x12^\n\nstate_sync\x18\x05 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.StateSync\x12S\n\x04time\x18\x06 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Time\x1a\x82\x05\n\x07Version\x12\x63\n\x08software\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Software\x12\x63\n\x08protocol\x18\x02 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol\x1a^\n\x08Software\x12\x0c\n\x04\x64\x61pi\x18\x01 \x01(\t\x12\x12\n\x05\x64rive\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ntenderdash\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_driveB\r\n\x0b_tenderdash\x1a\xcc\x02\n\x08Protocol\x12p\n\ntenderdash\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Tenderdash\x12\x66\n\x05\x64rive\x18\x02 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Drive\x1a(\n\nTenderdash\x12\x0b\n\x03p2p\x18\x01 \x01(\r\x12\r\n\x05\x62lock\x18\x02 \x01(\r\x1a<\n\x05\x44rive\x12\x0e\n\x06latest\x18\x03 \x01(\r\x12\x0f\n\x07\x63urrent\x18\x04 \x01(\r\x12\x12\n\nnext_epoch\x18\x05 \x01(\r\x1a\x7f\n\x04Time\x12\x11\n\x05local\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x05\x62lock\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x12\x18\n\x07genesis\x18\x03 \x01(\x04\x42\x02\x30\x01H\x01\x88\x01\x01\x12\x12\n\x05\x65poch\x18\x04 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_blockB\n\n\x08_genesisB\x08\n\x06_epoch\x1a<\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x18\n\x0bpro_tx_hash\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x0e\n\x0c_pro_tx_hash\x1a\xb3\x02\n\x05\x43hain\x12\x13\n\x0b\x63\x61tching_up\x18\x01 \x01(\x08\x12\x19\n\x11latest_block_hash\x18\x02 \x01(\x0c\x12\x17\n\x0flatest_app_hash\x18\x03 \x01(\x0c\x12\x1f\n\x13latest_block_height\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13\x65\x61rliest_block_hash\x18\x05 \x01(\x0c\x12\x19\n\x11\x65\x61rliest_app_hash\x18\x06 \x01(\x0c\x12!\n\x15\x65\x61rliest_block_height\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15max_peer_block_height\x18\t \x01(\x04\x42\x02\x30\x01\x12%\n\x18\x63ore_chain_locked_height\x18\n \x01(\rH\x00\x88\x01\x01\x42\x1b\n\x19_core_chain_locked_height\x1a\x43\n\x07Network\x12\x10\n\x08\x63hain_id\x18\x01 \x01(\t\x12\x13\n\x0bpeers_count\x18\x02 \x01(\r\x12\x11\n\tlistening\x18\x03 \x01(\x08\x1a\x85\x02\n\tStateSync\x12\x1d\n\x11total_synced_time\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1a\n\x0eremaining_time\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0ftotal_snapshots\x18\x03 \x01(\r\x12\"\n\x16\x63hunk_process_avg_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x0fsnapshot_height\x18\x05 \x01(\x04\x42\x02\x30\x01\x12!\n\x15snapshot_chunks_count\x18\x06 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x11\x62\x61\x63kfilled_blocks\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15\x62\x61\x63kfill_blocks_total\x18\x08 \x01(\x04\x42\x02\x30\x01\x42\t\n\x07version\"\xb1\x01\n\x1cGetCurrentQuorumsInfoRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest.GetCurrentQuorumsInfoRequestV0H\x00\x1a \n\x1eGetCurrentQuorumsInfoRequestV0B\t\n\x07version\"\xa1\x05\n\x1dGetCurrentQuorumsInfoResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.GetCurrentQuorumsInfoResponseV0H\x00\x1a\x46\n\x0bValidatorV0\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07node_ip\x18\x02 \x01(\t\x12\x11\n\tis_banned\x18\x03 \x01(\x08\x1a\xaf\x01\n\x0eValidatorSetV0\x12\x13\n\x0bquorum_hash\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ore_height\x18\x02 \x01(\r\x12U\n\x07members\x18\x03 \x03(\x0b\x32\x44.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorV0\x12\x1c\n\x14threshold_public_key\x18\x04 \x01(\x0c\x1a\x92\x02\n\x1fGetCurrentQuorumsInfoResponseV0\x12\x15\n\rquorum_hashes\x18\x01 \x03(\x0c\x12\x1b\n\x13\x63urrent_quorum_hash\x18\x02 \x01(\x0c\x12_\n\x0evalidator_sets\x18\x03 \x03(\x0b\x32G.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorSetV0\x12\x1b\n\x13last_block_proposer\x18\x04 \x01(\x0c\x12=\n\x08metadata\x18\x05 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\t\n\x07version\"\xf4\x01\n\x1fGetIdentityTokenBalancesRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest.GetIdentityTokenBalancesRequestV0H\x00\x1aZ\n!GetIdentityTokenBalancesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xad\x05\n GetIdentityTokenBalancesResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0H\x00\x1a\x8f\x04\n\"GetIdentityTokenBalancesResponseV0\x12\x86\x01\n\x0etoken_balances\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aG\n\x11TokenBalanceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x9a\x01\n\rTokenBalances\x12\x88\x01\n\x0etoken_balances\x18\x01 \x03(\x0b\x32p.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xfc\x01\n!GetIdentitiesTokenBalancesRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest.GetIdentitiesTokenBalancesRequestV0H\x00\x1a\\\n#GetIdentitiesTokenBalancesRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xf2\x05\n\"GetIdentitiesTokenBalancesResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0H\x00\x1a\xce\x04\n$GetIdentitiesTokenBalancesResponseV0\x12\x9b\x01\n\x17identity_token_balances\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aR\n\x19IdentityTokenBalanceEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\xb7\x01\n\x15IdentityTokenBalances\x12\x9d\x01\n\x17identity_token_balances\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xe8\x01\n\x1cGetIdentityTokenInfosRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest.GetIdentityTokenInfosRequestV0H\x00\x1aW\n\x1eGetIdentityTokenInfosRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\x98\x06\n\x1dGetIdentityTokenInfosResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0H\x00\x1a\x83\x05\n\x1fGetIdentityTokenInfosResponseV0\x12z\n\x0btoken_infos\x18\x01 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb0\x01\n\x0eTokenInfoEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x82\x01\n\x04info\x18\x02 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x8a\x01\n\nTokenInfos\x12|\n\x0btoken_infos\x18\x01 \x03(\x0b\x32g.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n\x1eGetIdentitiesTokenInfosRequest\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest.GetIdentitiesTokenInfosRequestV0H\x00\x1aY\n GetIdentitiesTokenInfosRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xca\x06\n\x1fGetIdentitiesTokenInfosResponse\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0H\x00\x1a\xaf\x05\n!GetIdentitiesTokenInfosResponseV0\x12\x8f\x01\n\x14identity_token_infos\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.IdentityTokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb7\x01\n\x0eTokenInfoEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x86\x01\n\x04info\x18\x02 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x97\x01\n\x12IdentityTokenInfos\x12\x80\x01\n\x0btoken_infos\x18\x01 \x03(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbf\x01\n\x17GetTokenStatusesRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetTokenStatusesRequest.GetTokenStatusesRequestV0H\x00\x1a=\n\x19GetTokenStatusesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xe7\x04\n\x18GetTokenStatusesResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0H\x00\x1a\xe1\x03\n\x1aGetTokenStatusesResponseV0\x12v\n\x0etoken_statuses\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x44\n\x10TokenStatusEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x13\n\x06paused\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_paused\x1a\x88\x01\n\rTokenStatuses\x12w\n\x0etoken_statuses\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusEntryB\x08\n\x06resultB\t\n\x07version\"\xef\x01\n#GetTokenDirectPurchasePricesRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest.GetTokenDirectPurchasePricesRequestV0H\x00\x1aI\n%GetTokenDirectPurchasePricesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x8b\t\n$GetTokenDirectPurchasePricesResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0H\x00\x1a\xe1\x07\n&GetTokenDirectPurchasePricesResponseV0\x12\xa9\x01\n\x1ctoken_direct_purchase_prices\x18\x01 \x01(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePricesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xa7\x01\n\x0fPricingSchedule\x12\x93\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PriceForQuantity\x1a\xe4\x01\n\x1dTokenDirectPurchasePriceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x15\n\x0b\x66ixed_price\x18\x02 \x01(\x04H\x00\x12\x90\x01\n\x0evariable_price\x18\x03 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PricingScheduleH\x00\x42\x07\n\x05price\x1a\xc8\x01\n\x19TokenDirectPurchasePrices\x12\xaa\x01\n\x1btoken_direct_purchase_price\x18\x01 \x03(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePriceEntryB\x08\n\x06resultB\t\n\x07version\"\xce\x01\n\x1bGetTokenContractInfoRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenContractInfoRequest.GetTokenContractInfoRequestV0H\x00\x1a@\n\x1dGetTokenContractInfoRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xfb\x03\n\x1cGetTokenContractInfoResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0H\x00\x1a\xe9\x02\n\x1eGetTokenContractInfoResponseV0\x12|\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0.TokenContractInfoDataH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aM\n\x15TokenContractInfoData\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xef\x04\n)GetTokenPreProgrammedDistributionsRequest\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0H\x00\x1a\xb6\x03\n+GetTokenPreProgrammedDistributionsRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x98\x01\n\rstart_at_info\x18\x02 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0.StartAtInfoH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x1a\x9a\x01\n\x0bStartAtInfo\x12\x15\n\rstart_time_ms\x18\x01 \x01(\x04\x12\x1c\n\x0fstart_recipient\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12%\n\x18start_recipient_included\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_start_recipientB\x1b\n\x19_start_recipient_includedB\x10\n\x0e_start_at_infoB\x08\n\x06_limitB\t\n\x07version\"\xec\x07\n*GetTokenPreProgrammedDistributionsResponse\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0H\x00\x1a\xaf\x06\n,GetTokenPreProgrammedDistributionsResponseV0\x12\xa5\x01\n\x13token_distributions\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a>\n\x16TokenDistributionEntry\x12\x14\n\x0crecipient_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x1a\xd4\x01\n\x1bTokenTimedDistributionEntry\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\xa1\x01\n\rdistributions\x18\x02 \x03(\x0b\x32\x89\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionEntry\x1a\xc3\x01\n\x12TokenDistributions\x12\xac\x01\n\x13token_distributions\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenTimedDistributionEntryB\x08\n\x06resultB\t\n\x07version\"\x82\x04\n-GetTokenPerpetualDistributionLastClaimRequest\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.GetTokenPerpetualDistributionLastClaimRequestV0H\x00\x1aI\n\x11\x43ontractTokenInfo\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\r\x1a\xf1\x01\n/GetTokenPerpetualDistributionLastClaimRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12v\n\rcontract_info\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.ContractTokenInfoH\x00\x88\x01\x01\x12\x13\n\x0bidentity_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x10\n\x0e_contract_infoB\t\n\x07version\"\x93\x05\n.GetTokenPerpetualDistributionLastClaimResponse\x12\x88\x01\n\x02v0\x18\x01 \x01(\x0b\x32z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0H\x00\x1a\xca\x03\n0GetTokenPerpetualDistributionLastClaimResponseV0\x12\x9f\x01\n\nlast_claim\x18\x01 \x01(\x0b\x32\x88\x01.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0.LastClaimInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\rLastClaimInfo\x12\x1a\n\x0ctimestamp_ms\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x1a\n\x0c\x62lock_height\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x12\x0f\n\x05\x65poch\x18\x03 \x01(\rH\x00\x12\x13\n\traw_bytes\x18\x04 \x01(\x0cH\x00\x42\t\n\x07paid_atB\x08\n\x06resultB\t\n\x07version\"\xca\x01\n\x1aGetTokenTotalSupplyRequest\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest.GetTokenTotalSupplyRequestV0H\x00\x1a?\n\x1cGetTokenTotalSupplyRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xaf\x04\n\x1bGetTokenTotalSupplyResponse\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0H\x00\x1a\xa0\x03\n\x1dGetTokenTotalSupplyResponseV0\x12\x88\x01\n\x12token_total_supply\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0.TokenTotalSupplyEntryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\x15TokenTotalSupplyEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x30\n(total_aggregated_amount_in_user_accounts\x18\x02 \x01(\x04\x12\x1b\n\x13total_system_amount\x18\x03 \x01(\x04\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x01\n\x13GetGroupInfoRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetGroupInfoRequest.GetGroupInfoRequestV0H\x00\x1a\\\n\x15GetGroupInfoRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xd4\x05\n\x14GetGroupInfoResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0H\x00\x1a\xda\x04\n\x16GetGroupInfoResponseV0\x12\x66\n\ngroup_info\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x98\x01\n\x0eGroupInfoEntry\x12h\n\x07members\x18\x01 \x03(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x02 \x01(\r\x1a\x8a\x01\n\tGroupInfo\x12n\n\ngroup_info\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoEntryH\x00\x88\x01\x01\x42\r\n\x0b_group_infoB\x08\n\x06resultB\t\n\x07version\"\xed\x03\n\x14GetGroupInfosRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfosRequest.GetGroupInfosRequestV0H\x00\x1au\n\x1cStartAtGroupContractPosition\x12%\n\x1dstart_group_contract_position\x18\x01 \x01(\r\x12.\n&start_group_contract_position_included\x18\x02 \x01(\x08\x1a\xfc\x01\n\x16GetGroupInfosRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12{\n start_at_group_contract_position\x18\x02 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupInfosRequest.StartAtGroupContractPositionH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x42#\n!_start_at_group_contract_positionB\x08\n\x06_countB\t\n\x07version\"\xff\x05\n\x15GetGroupInfosResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0H\x00\x1a\x82\x05\n\x17GetGroupInfosResponseV0\x12j\n\x0bgroup_infos\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\xc3\x01\n\x16GroupPositionInfoEntry\x12\x1f\n\x17group_contract_position\x18\x01 \x01(\r\x12j\n\x07members\x18\x02 \x03(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x03 \x01(\r\x1a\x82\x01\n\nGroupInfos\x12t\n\x0bgroup_infos\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupPositionInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbe\x04\n\x16GetGroupActionsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetGroupActionsRequest.GetGroupActionsRequestV0H\x00\x1aL\n\x0fStartAtActionId\x12\x17\n\x0fstart_action_id\x18\x01 \x01(\x0c\x12 \n\x18start_action_id_included\x18\x02 \x01(\x08\x1a\xc8\x02\n\x18GetGroupActionsRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12N\n\x06status\x18\x03 \x01(\x0e\x32>.org.dash.platform.dapi.v0.GetGroupActionsRequest.ActionStatus\x12\x62\n\x12start_at_action_id\x18\x04 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetGroupActionsRequest.StartAtActionIdH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x42\x15\n\x13_start_at_action_idB\x08\n\x06_count\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\xd6\x1e\n\x17GetGroupActionsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0H\x00\x1a\xd3\x1d\n\x19GetGroupActionsResponseV0\x12r\n\rgroup_actions\x18\x01 \x01(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a[\n\tMintEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0crecipient_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a[\n\tBurnEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0c\x62urn_from_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aJ\n\x0b\x46reezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aL\n\rUnfreezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x66\n\x17\x44\x65stroyFrozenFundsEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x13SharedEncryptedNote\x12\x18\n\x10sender_key_index\x18\x01 \x01(\r\x12\x1b\n\x13recipient_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a{\n\x15PersonalEncryptedNote\x12!\n\x19root_encryption_key_index\x18\x01 \x01(\r\x12\'\n\x1f\x64\x65rivation_encryption_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a\xe9\x01\n\x14\x45mergencyActionEvent\x12\x81\x01\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32l.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEvent.ActionType\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\"#\n\nActionType\x12\t\n\x05PAUSE\x10\x00\x12\n\n\x06RESUME\x10\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x16TokenConfigUpdateEvent\x12 \n\x18token_config_update_item\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\xe6\x03\n\x1eUpdateDirectPurchasePriceEvent\x12\x15\n\x0b\x66ixed_price\x18\x01 \x01(\x04H\x00\x12\x95\x01\n\x0evariable_price\x18\x02 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PricingScheduleH\x00\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x01\x88\x01\x01\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xac\x01\n\x0fPricingSchedule\x12\x98\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PriceForQuantityB\x07\n\x05priceB\x0e\n\x0c_public_note\x1a\xfc\x02\n\x10GroupActionEvent\x12n\n\x0btoken_event\x18\x01 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenEventH\x00\x12t\n\x0e\x64ocument_event\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentEventH\x00\x12t\n\x0e\x63ontract_event\x18\x03 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractEventH\x00\x42\x0c\n\nevent_type\x1a\x8b\x01\n\rDocumentEvent\x12r\n\x06\x63reate\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentCreateEventH\x00\x42\x06\n\x04type\x1a/\n\x13\x44ocumentCreateEvent\x12\x18\n\x10\x63reated_document\x18\x01 \x01(\x0c\x1a/\n\x13\x43ontractUpdateEvent\x12\x18\n\x10updated_contract\x18\x01 \x01(\x0c\x1a\x8b\x01\n\rContractEvent\x12r\n\x06update\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractUpdateEventH\x00\x42\x06\n\x04type\x1a\xd1\x07\n\nTokenEvent\x12\x66\n\x04mint\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.MintEventH\x00\x12\x66\n\x04\x62urn\x18\x02 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.BurnEventH\x00\x12j\n\x06\x66reeze\x18\x03 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.FreezeEventH\x00\x12n\n\x08unfreeze\x18\x04 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UnfreezeEventH\x00\x12\x84\x01\n\x14\x64\x65stroy_frozen_funds\x18\x05 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DestroyFrozenFundsEventH\x00\x12}\n\x10\x65mergency_action\x18\x06 \x01(\x0b\x32\x61.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEventH\x00\x12\x82\x01\n\x13token_config_update\x18\x07 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenConfigUpdateEventH\x00\x12\x83\x01\n\x0cupdate_price\x18\x08 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEventH\x00\x42\x06\n\x04type\x1a\x93\x01\n\x10GroupActionEntry\x12\x11\n\taction_id\x18\x01 \x01(\x0c\x12l\n\x05\x65vent\x18\x02 \x01(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEvent\x1a\x84\x01\n\x0cGroupActions\x12t\n\rgroup_actions\x18\x01 \x03(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEntryB\x08\n\x06resultB\t\n\x07version\"\x88\x03\n\x1cGetGroupActionSignersRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.GetGroupActionSignersRequestV0H\x00\x1a\xce\x01\n\x1eGetGroupActionSignersRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12T\n\x06status\x18\x03 \x01(\x0e\x32\x44.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.ActionStatus\x12\x11\n\taction_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\x8b\x05\n\x1dGetGroupActionSignersResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0H\x00\x1a\xf6\x03\n\x1fGetGroupActionSignersResponseV0\x12\x8b\x01\n\x14group_action_signers\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x35\n\x11GroupActionSigner\x12\x11\n\tsigner_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x91\x01\n\x12GroupActionSigners\x12{\n\x07signers\x18\x01 \x03(\x0b\x32j.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignerB\x08\n\x06resultB\t\n\x07version*Z\n\nKeyPurpose\x12\x12\n\x0e\x41UTHENTICATION\x10\x00\x12\x0e\n\nENCRYPTION\x10\x01\x12\x0e\n\nDECRYPTION\x10\x02\x12\x0c\n\x08TRANSFER\x10\x03\x12\n\n\x06VOTING\x10\x05\x32\xf4\x36\n\x08Platform\x12\x93\x01\n\x18\x62roadcastStateTransition\x12:.org.dash.platform.dapi.v0.BroadcastStateTransitionRequest\x1a;.org.dash.platform.dapi.v0.BroadcastStateTransitionResponse\x12l\n\x0bgetIdentity\x12-.org.dash.platform.dapi.v0.GetIdentityRequest\x1a..org.dash.platform.dapi.v0.GetIdentityResponse\x12x\n\x0fgetIdentityKeys\x12\x31.org.dash.platform.dapi.v0.GetIdentityKeysRequest\x1a\x32.org.dash.platform.dapi.v0.GetIdentityKeysResponse\x12\x96\x01\n\x19getIdentitiesContractKeys\x12;.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest\x1a<.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse\x12{\n\x10getIdentityNonce\x12\x32.org.dash.platform.dapi.v0.GetIdentityNonceRequest\x1a\x33.org.dash.platform.dapi.v0.GetIdentityNonceResponse\x12\x93\x01\n\x18getIdentityContractNonce\x12:.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse\x12\x81\x01\n\x12getIdentityBalance\x12\x34.org.dash.platform.dapi.v0.GetIdentityBalanceRequest\x1a\x35.org.dash.platform.dapi.v0.GetIdentityBalanceResponse\x12\x8a\x01\n\x15getIdentitiesBalances\x12\x37.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse\x12\xa2\x01\n\x1dgetIdentityBalanceAndRevision\x12?.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest\x1a@.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse\x12\xaf\x01\n#getEvonodesProposedEpochBlocksByIds\x12\x45.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12\xb3\x01\n%getEvonodesProposedEpochBlocksByRange\x12G.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12x\n\x0fgetDataContract\x12\x31.org.dash.platform.dapi.v0.GetDataContractRequest\x1a\x32.org.dash.platform.dapi.v0.GetDataContractResponse\x12\x8d\x01\n\x16getDataContractHistory\x12\x38.org.dash.platform.dapi.v0.GetDataContractHistoryRequest\x1a\x39.org.dash.platform.dapi.v0.GetDataContractHistoryResponse\x12{\n\x10getDataContracts\x12\x32.org.dash.platform.dapi.v0.GetDataContractsRequest\x1a\x33.org.dash.platform.dapi.v0.GetDataContractsResponse\x12o\n\x0cgetDocuments\x12..org.dash.platform.dapi.v0.GetDocumentsRequest\x1a/.org.dash.platform.dapi.v0.GetDocumentsResponse\x12\x99\x01\n\x1agetIdentityByPublicKeyHash\x12<.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest\x1a=.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse\x12\xb4\x01\n#getIdentityByNonUniquePublicKeyHash\x12\x45.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest\x1a\x46.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse\x12\x9f\x01\n\x1cwaitForStateTransitionResult\x12>.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest\x1a?.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse\x12\x81\x01\n\x12getConsensusParams\x12\x34.org.dash.platform.dapi.v0.GetConsensusParamsRequest\x1a\x35.org.dash.platform.dapi.v0.GetConsensusParamsResponse\x12\xa5\x01\n\x1egetProtocolVersionUpgradeState\x12@.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest\x1a\x41.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse\x12\xb4\x01\n#getProtocolVersionUpgradeVoteStatus\x12\x45.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest\x1a\x46.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse\x12r\n\rgetEpochsInfo\x12/.org.dash.platform.dapi.v0.GetEpochsInfoRequest\x1a\x30.org.dash.platform.dapi.v0.GetEpochsInfoResponse\x12\x8d\x01\n\x16getFinalizedEpochInfos\x12\x38.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest\x1a\x39.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse\x12\x8a\x01\n\x15getContestedResources\x12\x37.org.dash.platform.dapi.v0.GetContestedResourcesRequest\x1a\x38.org.dash.platform.dapi.v0.GetContestedResourcesResponse\x12\xa2\x01\n\x1dgetContestedResourceVoteState\x12?.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest\x1a@.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse\x12\xba\x01\n%getContestedResourceVotersForIdentity\x12G.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest\x1aH.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse\x12\xae\x01\n!getContestedResourceIdentityVotes\x12\x43.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest\x1a\x44.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse\x12\x8a\x01\n\x15getVotePollsByEndDate\x12\x37.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest\x1a\x38.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse\x12\xa5\x01\n\x1egetPrefundedSpecializedBalance\x12@.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest\x1a\x41.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse\x12\x96\x01\n\x19getTotalCreditsInPlatform\x12;.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest\x1a<.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse\x12x\n\x0fgetPathElements\x12\x31.org.dash.platform.dapi.v0.GetPathElementsRequest\x1a\x32.org.dash.platform.dapi.v0.GetPathElementsResponse\x12\x66\n\tgetStatus\x12+.org.dash.platform.dapi.v0.GetStatusRequest\x1a,.org.dash.platform.dapi.v0.GetStatusResponse\x12\x8a\x01\n\x15getCurrentQuorumsInfo\x12\x37.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest\x1a\x38.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse\x12\x93\x01\n\x18getIdentityTokenBalances\x12:.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse\x12\x99\x01\n\x1agetIdentitiesTokenBalances\x12<.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest\x1a=.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse\x12\x8a\x01\n\x15getIdentityTokenInfos\x12\x37.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse\x12\x90\x01\n\x17getIdentitiesTokenInfos\x12\x39.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest\x1a:.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse\x12{\n\x10getTokenStatuses\x12\x32.org.dash.platform.dapi.v0.GetTokenStatusesRequest\x1a\x33.org.dash.platform.dapi.v0.GetTokenStatusesResponse\x12\x9f\x01\n\x1cgetTokenDirectPurchasePrices\x12>.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest\x1a?.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse\x12\x87\x01\n\x14getTokenContractInfo\x12\x36.org.dash.platform.dapi.v0.GetTokenContractInfoRequest\x1a\x37.org.dash.platform.dapi.v0.GetTokenContractInfoResponse\x12\xb1\x01\n\"getTokenPreProgrammedDistributions\x12\x44.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest\x1a\x45.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse\x12\xbd\x01\n&getTokenPerpetualDistributionLastClaim\x12H.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest\x1aI.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse\x12\x84\x01\n\x13getTokenTotalSupply\x12\x35.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest\x1a\x36.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse\x12o\n\x0cgetGroupInfo\x12..org.dash.platform.dapi.v0.GetGroupInfoRequest\x1a/.org.dash.platform.dapi.v0.GetGroupInfoResponse\x12r\n\rgetGroupInfos\x12/.org.dash.platform.dapi.v0.GetGroupInfosRequest\x1a\x30.org.dash.platform.dapi.v0.GetGroupInfosResponse\x12x\n\x0fgetGroupActions\x12\x31.org.dash.platform.dapi.v0.GetGroupActionsRequest\x1a\x32.org.dash.platform.dapi.v0.GetGroupActionsResponse\x12\x8a\x01\n\x15getGroupActionSigners\x12\x37.org.dash.platform.dapi.v0.GetGroupActionSignersRequest\x1a\x38.org.dash.platform.dapi.v0.GetGroupActionSignersResponse\x12\x8c\x01\n\x17subscribePlatformEvents\x12\x36.org.dash.platform.dapi.v0.PlatformSubscriptionRequest\x1a\x37.org.dash.platform.dapi.v0.PlatformSubscriptionResponse0\x01\x62\x06proto3' + serialized_pb=b'\n\x0eplatform.proto\x12\x19org.dash.platform.dapi.v0\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xfd\x01\n\x1bPlatformSubscriptionRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0H\x00\x1ao\n\x1dPlatformSubscriptionRequestV0\x12;\n\x06\x66ilter\x18\x01 \x01(\x0b\x32+.org.dash.platform.dapi.v0.PlatformFilterV0\x12\x11\n\tkeepalive\x18\x02 \x01(\rB\t\n\x07version\"\x8c\x02\n\x1cPlatformSubscriptionResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0H\x00\x1a{\n\x1ePlatformSubscriptionResponseV0\x12\x1e\n\x16\x63lient_subscription_id\x18\x01 \x01(\t\x12\x39\n\x05\x65vent\x18\x02 \x01(\x0b\x32*.org.dash.platform.dapi.v0.PlatformEventV0B\t\n\x07version\"\x83\x03\n\x10PlatformFilterV0\x12\x44\n\x03\x61ll\x18\x01 \x01(\x0b\x32\x35.org.dash.platform.dapi.v0.PlatformFilterV0.AllEventsH\x00\x12U\n\x0f\x62lock_committed\x18\x02 \x01(\x0b\x32:.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommittedH\x00\x12j\n\x17state_transition_result\x18\x03 \x01(\x0b\x32G.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilterH\x00\x1a\x0b\n\tAllEvents\x1a\x10\n\x0e\x42lockCommitted\x1a?\n\x1bStateTransitionResultFilter\x12\x14\n\x07tx_hash\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\n\n\x08_tx_hashB\x06\n\x04kind\"\xe5\x04\n\x0fPlatformEventV0\x12T\n\x0f\x62lock_committed\x18\x01 \x01(\x0b\x32\x39.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommittedH\x00\x12i\n\x1astate_transition_finalized\x18\x02 \x01(\x0b\x32\x43.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalizedH\x00\x12I\n\tkeepalive\x18\x03 \x01(\x0b\x32\x34.org.dash.platform.dapi.v0.PlatformEventV0.KeepaliveH\x00\x1aO\n\rBlockMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x13\n\x07time_ms\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rblock_id_hash\x18\x03 \x01(\x0c\x1aj\n\x0e\x42lockCommitted\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x10\n\x08tx_count\x18\x02 \x01(\r\x1as\n\x18StateTransitionFinalized\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x0f\n\x07tx_hash\x18\x02 \x01(\x0c\x1a\x0b\n\tKeepaliveB\x07\n\x05\x65vent\"\x81\x01\n\x05Proof\x12\x15\n\rgrovedb_proof\x18\x01 \x01(\x0c\x12\x13\n\x0bquorum_hash\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\r\n\x05round\x18\x04 \x01(\r\x12\x15\n\rblock_id_hash\x18\x05 \x01(\x0c\x12\x13\n\x0bquorum_type\x18\x06 \x01(\r\"\x98\x01\n\x10ResponseMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12 \n\x18\x63ore_chain_locked_height\x18\x02 \x01(\r\x12\r\n\x05\x65poch\x18\x03 \x01(\r\x12\x13\n\x07time_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x18\n\x10protocol_version\x18\x05 \x01(\r\x12\x10\n\x08\x63hain_id\x18\x06 \x01(\t\"L\n\x1dStateTransitionBroadcastError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\";\n\x1f\x42roadcastStateTransitionRequest\x12\x18\n\x10state_transition\x18\x01 \x01(\x0c\"\"\n BroadcastStateTransitionResponse\"\xa4\x01\n\x12GetIdentityRequest\x12P\n\x02v0\x18\x01 \x01(\x0b\x32\x42.org.dash.platform.dapi.v0.GetIdentityRequest.GetIdentityRequestV0H\x00\x1a\x31\n\x14GetIdentityRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xc1\x01\n\x17GetIdentityNonceRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityNonceRequest.GetIdentityNonceRequestV0H\x00\x1a?\n\x19GetIdentityNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xf6\x01\n\x1fGetIdentityContractNonceRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest.GetIdentityContractNonceRequestV0H\x00\x1a\\\n!GetIdentityContractNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xc0\x01\n\x19GetIdentityBalanceRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetIdentityBalanceRequest.GetIdentityBalanceRequestV0H\x00\x1a\x38\n\x1bGetIdentityBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xec\x01\n$GetIdentityBalanceAndRevisionRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest.GetIdentityBalanceAndRevisionRequestV0H\x00\x1a\x43\n&GetIdentityBalanceAndRevisionRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9e\x02\n\x13GetIdentityResponse\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetIdentityResponse.GetIdentityResponseV0H\x00\x1a\xa7\x01\n\x15GetIdentityResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbc\x02\n\x18GetIdentityNonceResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetIdentityNonceResponse.GetIdentityNonceResponseV0H\x00\x1a\xb6\x01\n\x1aGetIdentityNonceResponseV0\x12\x1c\n\x0eidentity_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xe5\x02\n GetIdentityContractNonceResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse.GetIdentityContractNonceResponseV0H\x00\x1a\xc7\x01\n\"GetIdentityContractNonceResponseV0\x12%\n\x17identity_contract_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n\x1aGetIdentityBalanceResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetIdentityBalanceResponse.GetIdentityBalanceResponseV0H\x00\x1a\xb1\x01\n\x1cGetIdentityBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb1\x04\n%GetIdentityBalanceAndRevisionResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0H\x00\x1a\x84\x03\n\'GetIdentityBalanceAndRevisionResponseV0\x12\x9b\x01\n\x14\x62\x61lance_and_revision\x18\x01 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0.BalanceAndRevisionH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x12\x42\x61lanceAndRevision\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x14\n\x08revision\x18\x02 \x01(\x04\x42\x02\x30\x01\x42\x08\n\x06resultB\t\n\x07version\"\xd1\x01\n\x0eKeyRequestType\x12\x36\n\x08\x61ll_keys\x18\x01 \x01(\x0b\x32\".org.dash.platform.dapi.v0.AllKeysH\x00\x12@\n\rspecific_keys\x18\x02 \x01(\x0b\x32\'.org.dash.platform.dapi.v0.SpecificKeysH\x00\x12:\n\nsearch_key\x18\x03 \x01(\x0b\x32$.org.dash.platform.dapi.v0.SearchKeyH\x00\x42\t\n\x07request\"\t\n\x07\x41llKeys\"\x1f\n\x0cSpecificKeys\x12\x0f\n\x07key_ids\x18\x01 \x03(\r\"\xb6\x01\n\tSearchKey\x12I\n\x0bpurpose_map\x18\x01 \x03(\x0b\x32\x34.org.dash.platform.dapi.v0.SearchKey.PurposeMapEntry\x1a^\n\x0fPurposeMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.org.dash.platform.dapi.v0.SecurityLevelMap:\x02\x38\x01\"\xbf\x02\n\x10SecurityLevelMap\x12]\n\x12security_level_map\x18\x01 \x03(\x0b\x32\x41.org.dash.platform.dapi.v0.SecurityLevelMap.SecurityLevelMapEntry\x1aw\n\x15SecurityLevelMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12M\n\x05value\x18\x02 \x01(\x0e\x32>.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType:\x02\x38\x01\"S\n\x12KeyKindRequestType\x12\x1f\n\x1b\x43URRENT_KEY_OF_KIND_REQUEST\x10\x00\x12\x1c\n\x18\x41LL_KEYS_OF_KIND_REQUEST\x10\x01\"\xda\x02\n\x16GetIdentityKeysRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetIdentityKeysRequest.GetIdentityKeysRequestV0H\x00\x1a\xda\x01\n\x18GetIdentityKeysRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12?\n\x0crequest_type\x18\x02 \x01(\x0b\x32).org.dash.platform.dapi.v0.KeyRequestType\x12+\n\x05limit\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\x99\x03\n\x17GetIdentityKeysResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0H\x00\x1a\x96\x02\n\x19GetIdentityKeysResponseV0\x12\x61\n\x04keys\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0.KeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1a\n\x04Keys\x12\x12\n\nkeys_bytes\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xef\x02\n GetIdentitiesContractKeysRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest.GetIdentitiesContractKeysRequestV0H\x00\x1a\xd1\x01\n\"GetIdentitiesContractKeysRequestV0\x12\x16\n\x0eidentities_ids\x18\x01 \x03(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\x1f\n\x12\x64ocument_type_name\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x08purposes\x18\x04 \x03(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x15\n\x13_document_type_nameB\t\n\x07version\"\xdf\x06\n!GetIdentitiesContractKeysResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0H\x00\x1a\xbe\x05\n#GetIdentitiesContractKeysResponseV0\x12\x8a\x01\n\x0fidentities_keys\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentitiesKeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aY\n\x0bPurposeKeys\x12\x36\n\x07purpose\x18\x01 \x01(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\x12\n\nkeys_bytes\x18\x02 \x03(\x0c\x1a\x9f\x01\n\x0cIdentityKeys\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12z\n\x04keys\x18\x02 \x03(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.PurposeKeys\x1a\x90\x01\n\x0eIdentitiesKeys\x12~\n\x07\x65ntries\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentityKeysB\x08\n\x06resultB\t\n\x07version\"\xa4\x02\n*GetEvonodesProposedEpochBlocksByIdsRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest.GetEvonodesProposedEpochBlocksByIdsRequestV0H\x00\x1ah\n,GetEvonodesProposedEpochBlocksByIdsRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0b\n\x03ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x08\n\x06_epochB\t\n\x07version\"\x92\x06\n&GetEvonodesProposedEpochBlocksResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0H\x00\x1a\xe2\x04\n(GetEvonodesProposedEpochBlocksResponseV0\x12\xb1\x01\n#evonodes_proposed_block_counts_info\x18\x01 \x01(\x0b\x32\x81\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodesProposedBlocksH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x15\x45vonodeProposedBlocks\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x11\n\x05\x63ount\x18\x02 \x01(\x04\x42\x02\x30\x01\x1a\xc4\x01\n\x16\x45vonodesProposedBlocks\x12\xa9\x01\n\x1e\x65vonodes_proposed_block_counts\x18\x01 \x03(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodeProposedBlocksB\x08\n\x06resultB\t\n\x07version\"\xf2\x02\n,GetEvonodesProposedEpochBlocksByRangeRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest.GetEvonodesProposedEpochBlocksByRangeRequestV0H\x00\x1a\xaf\x01\n.GetEvonodesProposedEpochBlocksByRangeRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x02 \x01(\rH\x02\x88\x01\x01\x12\x15\n\x0bstart_after\x18\x03 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x04 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x07\n\x05startB\x08\n\x06_epochB\x08\n\x06_limitB\t\n\x07version\"\xcd\x01\n\x1cGetIdentitiesBalancesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest.GetIdentitiesBalancesRequestV0H\x00\x1a<\n\x1eGetIdentitiesBalancesRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9f\x05\n\x1dGetIdentitiesBalancesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0H\x00\x1a\x8a\x04\n\x1fGetIdentitiesBalancesResponseV0\x12\x8a\x01\n\x13identities_balances\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentitiesBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aL\n\x0fIdentityBalance\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x8f\x01\n\x12IdentitiesBalances\x12y\n\x07\x65ntries\x18\x01 \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentityBalanceB\x08\n\x06resultB\t\n\x07version\"\xb4\x01\n\x16GetDataContractRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetDataContractRequest.GetDataContractRequestV0H\x00\x1a\x35\n\x18GetDataContractRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xb3\x02\n\x17GetDataContractResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractResponse.GetDataContractResponseV0H\x00\x1a\xb0\x01\n\x19GetDataContractResponseV0\x12\x17\n\rdata_contract\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb9\x01\n\x17GetDataContractsRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractsRequest.GetDataContractsRequestV0H\x00\x1a\x37\n\x19GetDataContractsRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xcf\x04\n\x18GetDataContractsResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetDataContractsResponse.GetDataContractsResponseV0H\x00\x1a[\n\x11\x44\x61taContractEntry\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x32\n\rdata_contract\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x1au\n\rDataContracts\x12\x64\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32\x45.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractEntry\x1a\xf5\x01\n\x1aGetDataContractsResponseV0\x12[\n\x0e\x64\x61ta_contracts\x18\x01 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc5\x02\n\x1dGetDataContractHistoryRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetDataContractHistoryRequest.GetDataContractHistoryRequestV0H\x00\x1a\xb0\x01\n\x1fGetDataContractHistoryRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0bstart_at_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xb2\x05\n\x1eGetDataContractHistoryResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0H\x00\x1a\x9a\x04\n GetDataContractHistoryResponseV0\x12\x8f\x01\n\x15\x64\x61ta_contract_history\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a;\n\x18\x44\x61taContractHistoryEntry\x12\x10\n\x04\x64\x61te\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05value\x18\x02 \x01(\x0c\x1a\xaa\x01\n\x13\x44\x61taContractHistory\x12\x92\x01\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32s.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryEntryB\x08\n\x06resultB\t\n\x07version\"\xb2\x02\n\x13GetDocumentsRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetDocumentsRequest.GetDocumentsRequestV0H\x00\x1a\xbb\x01\n\x15GetDocumentsRequestV0\x12\x18\n\x10\x64\x61ta_contract_id\x18\x01 \x01(\x0c\x12\x15\n\rdocument_type\x18\x02 \x01(\t\x12\r\n\x05where\x18\x03 \x01(\x0c\x12\x10\n\x08order_by\x18\x04 \x01(\x0c\x12\r\n\x05limit\x18\x05 \x01(\r\x12\x15\n\x0bstart_after\x18\x06 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x07 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x08 \x01(\x08\x42\x07\n\x05startB\t\n\x07version\"\x95\x03\n\x14GetDocumentsResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0H\x00\x1a\x9b\x02\n\x16GetDocumentsResponseV0\x12\x65\n\tdocuments\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0.DocumentsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1e\n\tDocuments\x12\x11\n\tdocuments\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xed\x01\n!GetIdentityByPublicKeyHashRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest.GetIdentityByPublicKeyHashRequestV0H\x00\x1aM\n#GetIdentityByPublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xda\x02\n\"GetIdentityByPublicKeyHashResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse.GetIdentityByPublicKeyHashResponseV0H\x00\x1a\xb6\x01\n$GetIdentityByPublicKeyHashResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n*GetIdentityByNonUniquePublicKeyHashRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest.GetIdentityByNonUniquePublicKeyHashRequestV0H\x00\x1a\x80\x01\n,GetIdentityByNonUniquePublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\x18\n\x0bstart_after\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x0e\n\x0c_start_afterB\t\n\x07version\"\xd6\x06\n+GetIdentityByNonUniquePublicKeyHashResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0H\x00\x1a\x96\x05\n-GetIdentityByNonUniquePublicKeyHashResponseV0\x12\x9a\x01\n\x08identity\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityResponseH\x00\x12\x9d\x01\n\x05proof\x18\x02 \x01(\x0b\x32\x8b\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityProvedResponseH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x36\n\x10IdentityResponse\x12\x15\n\x08identity\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x0b\n\t_identity\x1a\xa6\x01\n\x16IdentityProvedResponse\x12P\n&grovedb_identity_public_key_hash_proof\x18\x01 \x01(\x0b\x32 .org.dash.platform.dapi.v0.Proof\x12!\n\x14identity_proof_bytes\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x17\n\x15_identity_proof_bytesB\x08\n\x06resultB\t\n\x07version\"\xfb\x01\n#WaitForStateTransitionResultRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0H\x00\x1aU\n%WaitForStateTransitionResultRequestV0\x12\x1d\n\x15state_transition_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x99\x03\n$WaitForStateTransitionResultResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0H\x00\x1a\xef\x01\n&WaitForStateTransitionResultResponseV0\x12I\n\x05\x65rror\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.StateTransitionBroadcastErrorH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x19GetConsensusParamsRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetConsensusParamsRequest.GetConsensusParamsRequestV0H\x00\x1a<\n\x1bGetConsensusParamsRequestV0\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9c\x04\n\x1aGetConsensusParamsResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetConsensusParamsResponse.GetConsensusParamsResponseV0H\x00\x1aP\n\x14\x43onsensusParamsBlock\x12\x11\n\tmax_bytes\x18\x01 \x01(\t\x12\x0f\n\x07max_gas\x18\x02 \x01(\t\x12\x14\n\x0ctime_iota_ms\x18\x03 \x01(\t\x1a\x62\n\x17\x43onsensusParamsEvidence\x12\x1a\n\x12max_age_num_blocks\x18\x01 \x01(\t\x12\x18\n\x10max_age_duration\x18\x02 \x01(\t\x12\x11\n\tmax_bytes\x18\x03 \x01(\t\x1a\xda\x01\n\x1cGetConsensusParamsResponseV0\x12Y\n\x05\x62lock\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsBlock\x12_\n\x08\x65vidence\x18\x02 \x01(\x0b\x32M.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsEvidenceB\t\n\x07version\"\xe4\x01\n%GetProtocolVersionUpgradeStateRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest.GetProtocolVersionUpgradeStateRequestV0H\x00\x1a\x38\n\'GetProtocolVersionUpgradeStateRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xb5\x05\n&GetProtocolVersionUpgradeStateResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0H\x00\x1a\x85\x04\n(GetProtocolVersionUpgradeStateResponseV0\x12\x87\x01\n\x08versions\x18\x01 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x96\x01\n\x08Versions\x12\x89\x01\n\x08versions\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionEntry\x1a:\n\x0cVersionEntry\x12\x16\n\x0eversion_number\x18\x01 \x01(\r\x12\x12\n\nvote_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xa3\x02\n*GetProtocolVersionUpgradeVoteStatusRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest.GetProtocolVersionUpgradeVoteStatusRequestV0H\x00\x1ag\n,GetProtocolVersionUpgradeVoteStatusRequestV0\x12\x19\n\x11start_pro_tx_hash\x18\x01 \x01(\x0c\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xef\x05\n+GetProtocolVersionUpgradeVoteStatusResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0H\x00\x1a\xaf\x04\n-GetProtocolVersionUpgradeVoteStatusResponseV0\x12\x98\x01\n\x08versions\x18\x01 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignalsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xaf\x01\n\x0eVersionSignals\x12\x9c\x01\n\x0fversion_signals\x18\x01 \x03(\x0b\x32\x82\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignal\x1a\x35\n\rVersionSignal\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07version\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xf5\x01\n\x14GetEpochsInfoRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetEpochsInfoRequest.GetEpochsInfoRequestV0H\x00\x1a|\n\x16GetEpochsInfoRequestV0\x12\x31\n\x0bstart_epoch\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\x11\n\tascending\x18\x03 \x01(\x08\x12\r\n\x05prove\x18\x04 \x01(\x08\x42\t\n\x07version\"\x99\x05\n\x15GetEpochsInfoResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0H\x00\x1a\x9c\x04\n\x17GetEpochsInfoResponseV0\x12\x65\n\x06\x65pochs\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1au\n\nEpochInfos\x12g\n\x0b\x65poch_infos\x18\x01 \x03(\x0b\x32R.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfo\x1a\xa6\x01\n\tEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x16\n\nstart_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xbf\x02\n\x1dGetFinalizedEpochInfosRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest.GetFinalizedEpochInfosRequestV0H\x00\x1a\xaa\x01\n\x1fGetFinalizedEpochInfosRequestV0\x12\x19\n\x11start_epoch_index\x18\x01 \x01(\r\x12\"\n\x1astart_epoch_index_included\x18\x02 \x01(\x08\x12\x17\n\x0f\x65nd_epoch_index\x18\x03 \x01(\r\x12 \n\x18\x65nd_epoch_index_included\x18\x04 \x01(\x08\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xbd\t\n\x1eGetFinalizedEpochInfosResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0H\x00\x1a\xa5\x08\n GetFinalizedEpochInfosResponseV0\x12\x80\x01\n\x06\x65pochs\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xa4\x01\n\x13\x46inalizedEpochInfos\x12\x8c\x01\n\x15\x66inalized_epoch_infos\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfo\x1a\x9f\x04\n\x12\x46inalizedEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x1c\n\x10\x66irst_block_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\r\x12!\n\x15total_blocks_in_epoch\x18\x07 \x01(\x04\x42\x02\x30\x01\x12*\n\"next_epoch_start_core_block_height\x18\x08 \x01(\r\x12!\n\x15total_processing_fees\x18\t \x01(\x04\x42\x02\x30\x01\x12*\n\x1etotal_distributed_storage_fees\x18\n \x01(\x04\x42\x02\x30\x01\x12&\n\x1atotal_created_storage_fees\x18\x0b \x01(\x04\x42\x02\x30\x01\x12\x1e\n\x12\x63ore_block_rewards\x18\x0c \x01(\x04\x42\x02\x30\x01\x12\x81\x01\n\x0f\x62lock_proposers\x18\r \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.BlockProposer\x1a\x39\n\rBlockProposer\x12\x13\n\x0bproposer_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x62lock_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xde\x04\n\x1cGetContestedResourcesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0H\x00\x1a\xcc\x03\n\x1eGetContestedResourcesRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x1a\n\x12start_index_values\x18\x04 \x03(\x0c\x12\x18\n\x10\x65nd_index_values\x18\x05 \x03(\x0c\x12\x89\x01\n\x13start_at_value_info\x18\x06 \x01(\x0b\x32g.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0.StartAtValueInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1a\x45\n\x10StartAtValueInfo\x12\x13\n\x0bstart_value\x18\x01 \x01(\x0c\x12\x1c\n\x14start_value_included\x18\x02 \x01(\x08\x42\x16\n\x14_start_at_value_infoB\x08\n\x06_countB\t\n\x07version\"\x88\x04\n\x1dGetContestedResourcesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0H\x00\x1a\xf3\x02\n\x1fGetContestedResourcesResponseV0\x12\x95\x01\n\x19\x63ontested_resource_values\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0.ContestedResourceValuesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a<\n\x17\x43ontestedResourceValues\x12!\n\x19\x63ontested_resource_values\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x05\n\x1cGetVotePollsByEndDateRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0H\x00\x1a\xc0\x04\n\x1eGetVotePollsByEndDateRequestV0\x12\x84\x01\n\x0fstart_time_info\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.StartAtTimeInfoH\x00\x88\x01\x01\x12\x80\x01\n\rend_time_info\x18\x02 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.EndAtTimeInfoH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x11\n\tascending\x18\x05 \x01(\x08\x12\r\n\x05prove\x18\x06 \x01(\x08\x1aI\n\x0fStartAtTimeInfo\x12\x19\n\rstart_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13start_time_included\x18\x02 \x01(\x08\x1a\x43\n\rEndAtTimeInfo\x12\x17\n\x0b\x65nd_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x65nd_time_included\x18\x02 \x01(\x08\x42\x12\n\x10_start_time_infoB\x10\n\x0e_end_time_infoB\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07version\"\x83\x06\n\x1dGetVotePollsByEndDateResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0H\x00\x1a\xee\x04\n\x1fGetVotePollsByEndDateResponseV0\x12\x9c\x01\n\x18vote_polls_by_timestamps\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestampsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aV\n\x1eSerializedVotePollsByTimestamp\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x15serialized_vote_polls\x18\x02 \x03(\x0c\x1a\xd7\x01\n\x1fSerializedVotePollsByTimestamps\x12\x99\x01\n\x18vote_polls_by_timestamps\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestamp\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xff\x06\n$GetContestedResourceVoteStateRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0H\x00\x1a\xd5\x05\n&GetContestedResourceVoteStateRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x86\x01\n\x0bresult_type\x18\x05 \x01(\x0e\x32q.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.ResultType\x12\x36\n.allow_include_locked_and_abstaining_vote_tally\x18\x06 \x01(\x08\x12\xa3\x01\n\x18start_at_identifier_info\x18\x07 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x08 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\"I\n\nResultType\x12\r\n\tDOCUMENTS\x10\x00\x12\x0e\n\nVOTE_TALLY\x10\x01\x12\x1c\n\x18\x44OCUMENTS_AND_VOTE_TALLY\x10\x02\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\x94\x0c\n%GetContestedResourceVoteStateResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0H\x00\x1a\xe7\n\n\'GetContestedResourceVoteStateResponseV0\x12\xae\x01\n\x1d\x63ontested_resource_contenders\x18\x01 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.ContestedResourceContendersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xda\x03\n\x10\x46inishedVoteInfo\x12\xad\x01\n\x15\x66inished_vote_outcome\x18\x01 \x01(\x0e\x32\x8d\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfo.FinishedVoteOutcome\x12\x1f\n\x12won_by_identity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12$\n\x18\x66inished_at_block_height\x18\x03 \x01(\x04\x42\x02\x30\x01\x12%\n\x1d\x66inished_at_core_block_height\x18\x04 \x01(\r\x12%\n\x19\x66inished_at_block_time_ms\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x66inished_at_epoch\x18\x06 \x01(\r\"O\n\x13\x46inishedVoteOutcome\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\n\n\x06LOCKED\x10\x01\x12\x16\n\x12NO_PREVIOUS_WINNER\x10\x02\x42\x15\n\x13_won_by_identity_id\x1a\xc4\x03\n\x1b\x43ontestedResourceContenders\x12\x86\x01\n\ncontenders\x18\x01 \x03(\x0b\x32r.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.Contender\x12\x1f\n\x12\x61\x62stain_vote_tally\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0flock_vote_tally\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x9a\x01\n\x12\x66inished_vote_info\x18\x04 \x01(\x0b\x32y.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfoH\x02\x88\x01\x01\x42\x15\n\x13_abstain_vote_tallyB\x12\n\x10_lock_vote_tallyB\x15\n\x13_finished_vote_info\x1ak\n\tContender\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x17\n\nvote_count\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08\x64ocument\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x42\r\n\x0b_vote_countB\x0b\n\t_documentB\x08\n\x06resultB\t\n\x07version\"\xd5\x05\n,GetContestedResourceVotersForIdentityRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0H\x00\x1a\x92\x04\n.GetContestedResourceVotersForIdentityRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x15\n\rcontestant_id\x18\x05 \x01(\x0c\x12\xb4\x01\n\x18start_at_identifier_info\x18\x06 \x01(\x0b\x32\x8c\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\xf1\x04\n-GetContestedResourceVotersForIdentityResponse\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0H\x00\x1a\xab\x03\n/GetContestedResourceVotersForIdentityResponseV0\x12\xb6\x01\n\x19\x63ontested_resource_voters\x18\x01 \x01(\x0b\x32\x90\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0.ContestedResourceVotersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x43\n\x17\x43ontestedResourceVoters\x12\x0e\n\x06voters\x18\x01 \x03(\x0c\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xad\x05\n(GetContestedResourceIdentityVotesRequest\x12|\n\x02v0\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0H\x00\x1a\xf7\x03\n*GetContestedResourceIdentityVotesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0forder_ascending\x18\x04 \x01(\x08\x12\xae\x01\n\x1astart_at_vote_poll_id_info\x18\x05 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0.StartAtVotePollIdInfoH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x1a\x61\n\x15StartAtVotePollIdInfo\x12 \n\x18start_at_poll_identifier\x18\x01 \x01(\x0c\x12&\n\x1estart_poll_identifier_included\x18\x02 \x01(\x08\x42\x1d\n\x1b_start_at_vote_poll_id_infoB\t\n\x07version\"\xc8\n\n)GetContestedResourceIdentityVotesResponse\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0H\x00\x1a\x8f\t\n+GetContestedResourceIdentityVotesResponseV0\x12\xa1\x01\n\x05votes\x18\x01 \x01(\x0b\x32\x8f\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVotesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xf7\x01\n\x1e\x43ontestedResourceIdentityVotes\x12\xba\x01\n!contested_resource_identity_votes\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVote\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x1a\xad\x02\n\x12ResourceVoteChoice\x12\xad\x01\n\x10vote_choice_type\x18\x01 \x01(\x0e\x32\x92\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoice.VoteChoiceType\x12\x18\n\x0bidentity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\"=\n\x0eVoteChoiceType\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\x0b\n\x07\x41\x42STAIN\x10\x01\x12\x08\n\x04LOCK\x10\x02\x42\x0e\n\x0c_identity_id\x1a\x95\x02\n\x1d\x43ontestedResourceIdentityVote\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\'\n\x1fserialized_index_storage_values\x18\x03 \x03(\x0c\x12\x99\x01\n\x0bvote_choice\x18\x04 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoiceB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n%GetPrefundedSpecializedBalanceRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest.GetPrefundedSpecializedBalanceRequestV0H\x00\x1a\x44\n\'GetPrefundedSpecializedBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xed\x02\n&GetPrefundedSpecializedBalanceResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse.GetPrefundedSpecializedBalanceResponseV0H\x00\x1a\xbd\x01\n(GetPrefundedSpecializedBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xd0\x01\n GetTotalCreditsInPlatformRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest.GetTotalCreditsInPlatformRequestV0H\x00\x1a\x33\n\"GetTotalCreditsInPlatformRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xd9\x02\n!GetTotalCreditsInPlatformResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse.GetTotalCreditsInPlatformResponseV0H\x00\x1a\xb8\x01\n#GetTotalCreditsInPlatformResponseV0\x12\x15\n\x07\x63redits\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x16GetPathElementsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetPathElementsRequest.GetPathElementsRequestV0H\x00\x1a\x45\n\x18GetPathElementsRequestV0\x12\x0c\n\x04path\x18\x01 \x03(\x0c\x12\x0c\n\x04keys\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xa3\x03\n\x17GetPathElementsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0H\x00\x1a\xa0\x02\n\x19GetPathElementsResponseV0\x12i\n\x08\x65lements\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0.ElementsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1c\n\x08\x45lements\x12\x10\n\x08\x65lements\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\x81\x01\n\x10GetStatusRequest\x12L\n\x02v0\x18\x01 \x01(\x0b\x32>.org.dash.platform.dapi.v0.GetStatusRequest.GetStatusRequestV0H\x00\x1a\x14\n\x12GetStatusRequestV0B\t\n\x07version\"\xe4\x10\n\x11GetStatusResponse\x12N\n\x02v0\x18\x01 \x01(\x0b\x32@.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0H\x00\x1a\xf3\x0f\n\x13GetStatusResponseV0\x12Y\n\x07version\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version\x12S\n\x04node\x18\x02 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Node\x12U\n\x05\x63hain\x18\x03 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Chain\x12Y\n\x07network\x18\x04 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Network\x12^\n\nstate_sync\x18\x05 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.StateSync\x12S\n\x04time\x18\x06 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Time\x1a\x82\x05\n\x07Version\x12\x63\n\x08software\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Software\x12\x63\n\x08protocol\x18\x02 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol\x1a^\n\x08Software\x12\x0c\n\x04\x64\x61pi\x18\x01 \x01(\t\x12\x12\n\x05\x64rive\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ntenderdash\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_driveB\r\n\x0b_tenderdash\x1a\xcc\x02\n\x08Protocol\x12p\n\ntenderdash\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Tenderdash\x12\x66\n\x05\x64rive\x18\x02 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Drive\x1a(\n\nTenderdash\x12\x0b\n\x03p2p\x18\x01 \x01(\r\x12\r\n\x05\x62lock\x18\x02 \x01(\r\x1a<\n\x05\x44rive\x12\x0e\n\x06latest\x18\x03 \x01(\r\x12\x0f\n\x07\x63urrent\x18\x04 \x01(\r\x12\x12\n\nnext_epoch\x18\x05 \x01(\r\x1a\x7f\n\x04Time\x12\x11\n\x05local\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x05\x62lock\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x12\x18\n\x07genesis\x18\x03 \x01(\x04\x42\x02\x30\x01H\x01\x88\x01\x01\x12\x12\n\x05\x65poch\x18\x04 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_blockB\n\n\x08_genesisB\x08\n\x06_epoch\x1a<\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x18\n\x0bpro_tx_hash\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x0e\n\x0c_pro_tx_hash\x1a\xb3\x02\n\x05\x43hain\x12\x13\n\x0b\x63\x61tching_up\x18\x01 \x01(\x08\x12\x19\n\x11latest_block_hash\x18\x02 \x01(\x0c\x12\x17\n\x0flatest_app_hash\x18\x03 \x01(\x0c\x12\x1f\n\x13latest_block_height\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13\x65\x61rliest_block_hash\x18\x05 \x01(\x0c\x12\x19\n\x11\x65\x61rliest_app_hash\x18\x06 \x01(\x0c\x12!\n\x15\x65\x61rliest_block_height\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15max_peer_block_height\x18\t \x01(\x04\x42\x02\x30\x01\x12%\n\x18\x63ore_chain_locked_height\x18\n \x01(\rH\x00\x88\x01\x01\x42\x1b\n\x19_core_chain_locked_height\x1a\x43\n\x07Network\x12\x10\n\x08\x63hain_id\x18\x01 \x01(\t\x12\x13\n\x0bpeers_count\x18\x02 \x01(\r\x12\x11\n\tlistening\x18\x03 \x01(\x08\x1a\x85\x02\n\tStateSync\x12\x1d\n\x11total_synced_time\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1a\n\x0eremaining_time\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0ftotal_snapshots\x18\x03 \x01(\r\x12\"\n\x16\x63hunk_process_avg_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x0fsnapshot_height\x18\x05 \x01(\x04\x42\x02\x30\x01\x12!\n\x15snapshot_chunks_count\x18\x06 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x11\x62\x61\x63kfilled_blocks\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15\x62\x61\x63kfill_blocks_total\x18\x08 \x01(\x04\x42\x02\x30\x01\x42\t\n\x07version\"\xb1\x01\n\x1cGetCurrentQuorumsInfoRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest.GetCurrentQuorumsInfoRequestV0H\x00\x1a \n\x1eGetCurrentQuorumsInfoRequestV0B\t\n\x07version\"\xa1\x05\n\x1dGetCurrentQuorumsInfoResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.GetCurrentQuorumsInfoResponseV0H\x00\x1a\x46\n\x0bValidatorV0\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07node_ip\x18\x02 \x01(\t\x12\x11\n\tis_banned\x18\x03 \x01(\x08\x1a\xaf\x01\n\x0eValidatorSetV0\x12\x13\n\x0bquorum_hash\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ore_height\x18\x02 \x01(\r\x12U\n\x07members\x18\x03 \x03(\x0b\x32\x44.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorV0\x12\x1c\n\x14threshold_public_key\x18\x04 \x01(\x0c\x1a\x92\x02\n\x1fGetCurrentQuorumsInfoResponseV0\x12\x15\n\rquorum_hashes\x18\x01 \x03(\x0c\x12\x1b\n\x13\x63urrent_quorum_hash\x18\x02 \x01(\x0c\x12_\n\x0evalidator_sets\x18\x03 \x03(\x0b\x32G.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorSetV0\x12\x1b\n\x13last_block_proposer\x18\x04 \x01(\x0c\x12=\n\x08metadata\x18\x05 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\t\n\x07version\"\xf4\x01\n\x1fGetIdentityTokenBalancesRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest.GetIdentityTokenBalancesRequestV0H\x00\x1aZ\n!GetIdentityTokenBalancesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xad\x05\n GetIdentityTokenBalancesResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0H\x00\x1a\x8f\x04\n\"GetIdentityTokenBalancesResponseV0\x12\x86\x01\n\x0etoken_balances\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aG\n\x11TokenBalanceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x9a\x01\n\rTokenBalances\x12\x88\x01\n\x0etoken_balances\x18\x01 \x03(\x0b\x32p.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xfc\x01\n!GetIdentitiesTokenBalancesRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest.GetIdentitiesTokenBalancesRequestV0H\x00\x1a\\\n#GetIdentitiesTokenBalancesRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xf2\x05\n\"GetIdentitiesTokenBalancesResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0H\x00\x1a\xce\x04\n$GetIdentitiesTokenBalancesResponseV0\x12\x9b\x01\n\x17identity_token_balances\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aR\n\x19IdentityTokenBalanceEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\xb7\x01\n\x15IdentityTokenBalances\x12\x9d\x01\n\x17identity_token_balances\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xe8\x01\n\x1cGetIdentityTokenInfosRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest.GetIdentityTokenInfosRequestV0H\x00\x1aW\n\x1eGetIdentityTokenInfosRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\x98\x06\n\x1dGetIdentityTokenInfosResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0H\x00\x1a\x83\x05\n\x1fGetIdentityTokenInfosResponseV0\x12z\n\x0btoken_infos\x18\x01 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb0\x01\n\x0eTokenInfoEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x82\x01\n\x04info\x18\x02 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x8a\x01\n\nTokenInfos\x12|\n\x0btoken_infos\x18\x01 \x03(\x0b\x32g.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n\x1eGetIdentitiesTokenInfosRequest\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest.GetIdentitiesTokenInfosRequestV0H\x00\x1aY\n GetIdentitiesTokenInfosRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xca\x06\n\x1fGetIdentitiesTokenInfosResponse\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0H\x00\x1a\xaf\x05\n!GetIdentitiesTokenInfosResponseV0\x12\x8f\x01\n\x14identity_token_infos\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.IdentityTokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb7\x01\n\x0eTokenInfoEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x86\x01\n\x04info\x18\x02 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x97\x01\n\x12IdentityTokenInfos\x12\x80\x01\n\x0btoken_infos\x18\x01 \x03(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbf\x01\n\x17GetTokenStatusesRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetTokenStatusesRequest.GetTokenStatusesRequestV0H\x00\x1a=\n\x19GetTokenStatusesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xe7\x04\n\x18GetTokenStatusesResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0H\x00\x1a\xe1\x03\n\x1aGetTokenStatusesResponseV0\x12v\n\x0etoken_statuses\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x44\n\x10TokenStatusEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x13\n\x06paused\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_paused\x1a\x88\x01\n\rTokenStatuses\x12w\n\x0etoken_statuses\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusEntryB\x08\n\x06resultB\t\n\x07version\"\xef\x01\n#GetTokenDirectPurchasePricesRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest.GetTokenDirectPurchasePricesRequestV0H\x00\x1aI\n%GetTokenDirectPurchasePricesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x8b\t\n$GetTokenDirectPurchasePricesResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0H\x00\x1a\xe1\x07\n&GetTokenDirectPurchasePricesResponseV0\x12\xa9\x01\n\x1ctoken_direct_purchase_prices\x18\x01 \x01(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePricesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xa7\x01\n\x0fPricingSchedule\x12\x93\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PriceForQuantity\x1a\xe4\x01\n\x1dTokenDirectPurchasePriceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x15\n\x0b\x66ixed_price\x18\x02 \x01(\x04H\x00\x12\x90\x01\n\x0evariable_price\x18\x03 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PricingScheduleH\x00\x42\x07\n\x05price\x1a\xc8\x01\n\x19TokenDirectPurchasePrices\x12\xaa\x01\n\x1btoken_direct_purchase_price\x18\x01 \x03(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePriceEntryB\x08\n\x06resultB\t\n\x07version\"\xce\x01\n\x1bGetTokenContractInfoRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenContractInfoRequest.GetTokenContractInfoRequestV0H\x00\x1a@\n\x1dGetTokenContractInfoRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xfb\x03\n\x1cGetTokenContractInfoResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0H\x00\x1a\xe9\x02\n\x1eGetTokenContractInfoResponseV0\x12|\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0.TokenContractInfoDataH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aM\n\x15TokenContractInfoData\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xef\x04\n)GetTokenPreProgrammedDistributionsRequest\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0H\x00\x1a\xb6\x03\n+GetTokenPreProgrammedDistributionsRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x98\x01\n\rstart_at_info\x18\x02 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0.StartAtInfoH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x1a\x9a\x01\n\x0bStartAtInfo\x12\x15\n\rstart_time_ms\x18\x01 \x01(\x04\x12\x1c\n\x0fstart_recipient\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12%\n\x18start_recipient_included\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_start_recipientB\x1b\n\x19_start_recipient_includedB\x10\n\x0e_start_at_infoB\x08\n\x06_limitB\t\n\x07version\"\xec\x07\n*GetTokenPreProgrammedDistributionsResponse\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0H\x00\x1a\xaf\x06\n,GetTokenPreProgrammedDistributionsResponseV0\x12\xa5\x01\n\x13token_distributions\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a>\n\x16TokenDistributionEntry\x12\x14\n\x0crecipient_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x1a\xd4\x01\n\x1bTokenTimedDistributionEntry\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\xa1\x01\n\rdistributions\x18\x02 \x03(\x0b\x32\x89\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionEntry\x1a\xc3\x01\n\x12TokenDistributions\x12\xac\x01\n\x13token_distributions\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenTimedDistributionEntryB\x08\n\x06resultB\t\n\x07version\"\x82\x04\n-GetTokenPerpetualDistributionLastClaimRequest\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.GetTokenPerpetualDistributionLastClaimRequestV0H\x00\x1aI\n\x11\x43ontractTokenInfo\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\r\x1a\xf1\x01\n/GetTokenPerpetualDistributionLastClaimRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12v\n\rcontract_info\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.ContractTokenInfoH\x00\x88\x01\x01\x12\x13\n\x0bidentity_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x10\n\x0e_contract_infoB\t\n\x07version\"\x93\x05\n.GetTokenPerpetualDistributionLastClaimResponse\x12\x88\x01\n\x02v0\x18\x01 \x01(\x0b\x32z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0H\x00\x1a\xca\x03\n0GetTokenPerpetualDistributionLastClaimResponseV0\x12\x9f\x01\n\nlast_claim\x18\x01 \x01(\x0b\x32\x88\x01.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0.LastClaimInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\rLastClaimInfo\x12\x1a\n\x0ctimestamp_ms\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x1a\n\x0c\x62lock_height\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x12\x0f\n\x05\x65poch\x18\x03 \x01(\rH\x00\x12\x13\n\traw_bytes\x18\x04 \x01(\x0cH\x00\x42\t\n\x07paid_atB\x08\n\x06resultB\t\n\x07version\"\xca\x01\n\x1aGetTokenTotalSupplyRequest\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest.GetTokenTotalSupplyRequestV0H\x00\x1a?\n\x1cGetTokenTotalSupplyRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xaf\x04\n\x1bGetTokenTotalSupplyResponse\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0H\x00\x1a\xa0\x03\n\x1dGetTokenTotalSupplyResponseV0\x12\x88\x01\n\x12token_total_supply\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0.TokenTotalSupplyEntryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\x15TokenTotalSupplyEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x30\n(total_aggregated_amount_in_user_accounts\x18\x02 \x01(\x04\x12\x1b\n\x13total_system_amount\x18\x03 \x01(\x04\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x01\n\x13GetGroupInfoRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetGroupInfoRequest.GetGroupInfoRequestV0H\x00\x1a\\\n\x15GetGroupInfoRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xd4\x05\n\x14GetGroupInfoResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0H\x00\x1a\xda\x04\n\x16GetGroupInfoResponseV0\x12\x66\n\ngroup_info\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x98\x01\n\x0eGroupInfoEntry\x12h\n\x07members\x18\x01 \x03(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x02 \x01(\r\x1a\x8a\x01\n\tGroupInfo\x12n\n\ngroup_info\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoEntryH\x00\x88\x01\x01\x42\r\n\x0b_group_infoB\x08\n\x06resultB\t\n\x07version\"\xed\x03\n\x14GetGroupInfosRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfosRequest.GetGroupInfosRequestV0H\x00\x1au\n\x1cStartAtGroupContractPosition\x12%\n\x1dstart_group_contract_position\x18\x01 \x01(\r\x12.\n&start_group_contract_position_included\x18\x02 \x01(\x08\x1a\xfc\x01\n\x16GetGroupInfosRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12{\n start_at_group_contract_position\x18\x02 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupInfosRequest.StartAtGroupContractPositionH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x42#\n!_start_at_group_contract_positionB\x08\n\x06_countB\t\n\x07version\"\xff\x05\n\x15GetGroupInfosResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0H\x00\x1a\x82\x05\n\x17GetGroupInfosResponseV0\x12j\n\x0bgroup_infos\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\xc3\x01\n\x16GroupPositionInfoEntry\x12\x1f\n\x17group_contract_position\x18\x01 \x01(\r\x12j\n\x07members\x18\x02 \x03(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x03 \x01(\r\x1a\x82\x01\n\nGroupInfos\x12t\n\x0bgroup_infos\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupPositionInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbe\x04\n\x16GetGroupActionsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetGroupActionsRequest.GetGroupActionsRequestV0H\x00\x1aL\n\x0fStartAtActionId\x12\x17\n\x0fstart_action_id\x18\x01 \x01(\x0c\x12 \n\x18start_action_id_included\x18\x02 \x01(\x08\x1a\xc8\x02\n\x18GetGroupActionsRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12N\n\x06status\x18\x03 \x01(\x0e\x32>.org.dash.platform.dapi.v0.GetGroupActionsRequest.ActionStatus\x12\x62\n\x12start_at_action_id\x18\x04 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetGroupActionsRequest.StartAtActionIdH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x42\x15\n\x13_start_at_action_idB\x08\n\x06_count\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\xd6\x1e\n\x17GetGroupActionsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0H\x00\x1a\xd3\x1d\n\x19GetGroupActionsResponseV0\x12r\n\rgroup_actions\x18\x01 \x01(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a[\n\tMintEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0crecipient_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a[\n\tBurnEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0c\x62urn_from_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aJ\n\x0b\x46reezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aL\n\rUnfreezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x66\n\x17\x44\x65stroyFrozenFundsEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x13SharedEncryptedNote\x12\x18\n\x10sender_key_index\x18\x01 \x01(\r\x12\x1b\n\x13recipient_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a{\n\x15PersonalEncryptedNote\x12!\n\x19root_encryption_key_index\x18\x01 \x01(\r\x12\'\n\x1f\x64\x65rivation_encryption_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a\xe9\x01\n\x14\x45mergencyActionEvent\x12\x81\x01\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32l.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEvent.ActionType\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\"#\n\nActionType\x12\t\n\x05PAUSE\x10\x00\x12\n\n\x06RESUME\x10\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x16TokenConfigUpdateEvent\x12 \n\x18token_config_update_item\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\xe6\x03\n\x1eUpdateDirectPurchasePriceEvent\x12\x15\n\x0b\x66ixed_price\x18\x01 \x01(\x04H\x00\x12\x95\x01\n\x0evariable_price\x18\x02 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PricingScheduleH\x00\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x01\x88\x01\x01\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xac\x01\n\x0fPricingSchedule\x12\x98\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PriceForQuantityB\x07\n\x05priceB\x0e\n\x0c_public_note\x1a\xfc\x02\n\x10GroupActionEvent\x12n\n\x0btoken_event\x18\x01 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenEventH\x00\x12t\n\x0e\x64ocument_event\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentEventH\x00\x12t\n\x0e\x63ontract_event\x18\x03 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractEventH\x00\x42\x0c\n\nevent_type\x1a\x8b\x01\n\rDocumentEvent\x12r\n\x06\x63reate\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentCreateEventH\x00\x42\x06\n\x04type\x1a/\n\x13\x44ocumentCreateEvent\x12\x18\n\x10\x63reated_document\x18\x01 \x01(\x0c\x1a/\n\x13\x43ontractUpdateEvent\x12\x18\n\x10updated_contract\x18\x01 \x01(\x0c\x1a\x8b\x01\n\rContractEvent\x12r\n\x06update\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractUpdateEventH\x00\x42\x06\n\x04type\x1a\xd1\x07\n\nTokenEvent\x12\x66\n\x04mint\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.MintEventH\x00\x12\x66\n\x04\x62urn\x18\x02 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.BurnEventH\x00\x12j\n\x06\x66reeze\x18\x03 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.FreezeEventH\x00\x12n\n\x08unfreeze\x18\x04 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UnfreezeEventH\x00\x12\x84\x01\n\x14\x64\x65stroy_frozen_funds\x18\x05 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DestroyFrozenFundsEventH\x00\x12}\n\x10\x65mergency_action\x18\x06 \x01(\x0b\x32\x61.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEventH\x00\x12\x82\x01\n\x13token_config_update\x18\x07 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenConfigUpdateEventH\x00\x12\x83\x01\n\x0cupdate_price\x18\x08 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEventH\x00\x42\x06\n\x04type\x1a\x93\x01\n\x10GroupActionEntry\x12\x11\n\taction_id\x18\x01 \x01(\x0c\x12l\n\x05\x65vent\x18\x02 \x01(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEvent\x1a\x84\x01\n\x0cGroupActions\x12t\n\rgroup_actions\x18\x01 \x03(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEntryB\x08\n\x06resultB\t\n\x07version\"\x88\x03\n\x1cGetGroupActionSignersRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.GetGroupActionSignersRequestV0H\x00\x1a\xce\x01\n\x1eGetGroupActionSignersRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12T\n\x06status\x18\x03 \x01(\x0e\x32\x44.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.ActionStatus\x12\x11\n\taction_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\x8b\x05\n\x1dGetGroupActionSignersResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0H\x00\x1a\xf6\x03\n\x1fGetGroupActionSignersResponseV0\x12\x8b\x01\n\x14group_action_signers\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x35\n\x11GroupActionSigner\x12\x11\n\tsigner_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x91\x01\n\x12GroupActionSigners\x12{\n\x07signers\x18\x01 \x03(\x0b\x32j.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignerB\x08\n\x06resultB\t\n\x07version*Z\n\nKeyPurpose\x12\x12\n\x0e\x41UTHENTICATION\x10\x00\x12\x0e\n\nENCRYPTION\x10\x01\x12\x0e\n\nDECRYPTION\x10\x02\x12\x0c\n\x08TRANSFER\x10\x03\x12\n\n\x06VOTING\x10\x05\x32\xf4\x36\n\x08Platform\x12\x93\x01\n\x18\x62roadcastStateTransition\x12:.org.dash.platform.dapi.v0.BroadcastStateTransitionRequest\x1a;.org.dash.platform.dapi.v0.BroadcastStateTransitionResponse\x12l\n\x0bgetIdentity\x12-.org.dash.platform.dapi.v0.GetIdentityRequest\x1a..org.dash.platform.dapi.v0.GetIdentityResponse\x12x\n\x0fgetIdentityKeys\x12\x31.org.dash.platform.dapi.v0.GetIdentityKeysRequest\x1a\x32.org.dash.platform.dapi.v0.GetIdentityKeysResponse\x12\x96\x01\n\x19getIdentitiesContractKeys\x12;.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest\x1a<.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse\x12{\n\x10getIdentityNonce\x12\x32.org.dash.platform.dapi.v0.GetIdentityNonceRequest\x1a\x33.org.dash.platform.dapi.v0.GetIdentityNonceResponse\x12\x93\x01\n\x18getIdentityContractNonce\x12:.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse\x12\x81\x01\n\x12getIdentityBalance\x12\x34.org.dash.platform.dapi.v0.GetIdentityBalanceRequest\x1a\x35.org.dash.platform.dapi.v0.GetIdentityBalanceResponse\x12\x8a\x01\n\x15getIdentitiesBalances\x12\x37.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse\x12\xa2\x01\n\x1dgetIdentityBalanceAndRevision\x12?.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest\x1a@.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse\x12\xaf\x01\n#getEvonodesProposedEpochBlocksByIds\x12\x45.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12\xb3\x01\n%getEvonodesProposedEpochBlocksByRange\x12G.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12x\n\x0fgetDataContract\x12\x31.org.dash.platform.dapi.v0.GetDataContractRequest\x1a\x32.org.dash.platform.dapi.v0.GetDataContractResponse\x12\x8d\x01\n\x16getDataContractHistory\x12\x38.org.dash.platform.dapi.v0.GetDataContractHistoryRequest\x1a\x39.org.dash.platform.dapi.v0.GetDataContractHistoryResponse\x12{\n\x10getDataContracts\x12\x32.org.dash.platform.dapi.v0.GetDataContractsRequest\x1a\x33.org.dash.platform.dapi.v0.GetDataContractsResponse\x12o\n\x0cgetDocuments\x12..org.dash.platform.dapi.v0.GetDocumentsRequest\x1a/.org.dash.platform.dapi.v0.GetDocumentsResponse\x12\x99\x01\n\x1agetIdentityByPublicKeyHash\x12<.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest\x1a=.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse\x12\xb4\x01\n#getIdentityByNonUniquePublicKeyHash\x12\x45.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest\x1a\x46.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse\x12\x9f\x01\n\x1cwaitForStateTransitionResult\x12>.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest\x1a?.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse\x12\x81\x01\n\x12getConsensusParams\x12\x34.org.dash.platform.dapi.v0.GetConsensusParamsRequest\x1a\x35.org.dash.platform.dapi.v0.GetConsensusParamsResponse\x12\xa5\x01\n\x1egetProtocolVersionUpgradeState\x12@.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest\x1a\x41.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse\x12\xb4\x01\n#getProtocolVersionUpgradeVoteStatus\x12\x45.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest\x1a\x46.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse\x12r\n\rgetEpochsInfo\x12/.org.dash.platform.dapi.v0.GetEpochsInfoRequest\x1a\x30.org.dash.platform.dapi.v0.GetEpochsInfoResponse\x12\x8d\x01\n\x16getFinalizedEpochInfos\x12\x38.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest\x1a\x39.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse\x12\x8a\x01\n\x15getContestedResources\x12\x37.org.dash.platform.dapi.v0.GetContestedResourcesRequest\x1a\x38.org.dash.platform.dapi.v0.GetContestedResourcesResponse\x12\xa2\x01\n\x1dgetContestedResourceVoteState\x12?.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest\x1a@.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse\x12\xba\x01\n%getContestedResourceVotersForIdentity\x12G.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest\x1aH.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse\x12\xae\x01\n!getContestedResourceIdentityVotes\x12\x43.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest\x1a\x44.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse\x12\x8a\x01\n\x15getVotePollsByEndDate\x12\x37.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest\x1a\x38.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse\x12\xa5\x01\n\x1egetPrefundedSpecializedBalance\x12@.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest\x1a\x41.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse\x12\x96\x01\n\x19getTotalCreditsInPlatform\x12;.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest\x1a<.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse\x12x\n\x0fgetPathElements\x12\x31.org.dash.platform.dapi.v0.GetPathElementsRequest\x1a\x32.org.dash.platform.dapi.v0.GetPathElementsResponse\x12\x66\n\tgetStatus\x12+.org.dash.platform.dapi.v0.GetStatusRequest\x1a,.org.dash.platform.dapi.v0.GetStatusResponse\x12\x8a\x01\n\x15getCurrentQuorumsInfo\x12\x37.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest\x1a\x38.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse\x12\x93\x01\n\x18getIdentityTokenBalances\x12:.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse\x12\x99\x01\n\x1agetIdentitiesTokenBalances\x12<.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest\x1a=.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse\x12\x8a\x01\n\x15getIdentityTokenInfos\x12\x37.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse\x12\x90\x01\n\x17getIdentitiesTokenInfos\x12\x39.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest\x1a:.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse\x12{\n\x10getTokenStatuses\x12\x32.org.dash.platform.dapi.v0.GetTokenStatusesRequest\x1a\x33.org.dash.platform.dapi.v0.GetTokenStatusesResponse\x12\x9f\x01\n\x1cgetTokenDirectPurchasePrices\x12>.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest\x1a?.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse\x12\x87\x01\n\x14getTokenContractInfo\x12\x36.org.dash.platform.dapi.v0.GetTokenContractInfoRequest\x1a\x37.org.dash.platform.dapi.v0.GetTokenContractInfoResponse\x12\xb1\x01\n\"getTokenPreProgrammedDistributions\x12\x44.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest\x1a\x45.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse\x12\xbd\x01\n&getTokenPerpetualDistributionLastClaim\x12H.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest\x1aI.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse\x12\x84\x01\n\x13getTokenTotalSupply\x12\x35.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest\x1a\x36.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse\x12o\n\x0cgetGroupInfo\x12..org.dash.platform.dapi.v0.GetGroupInfoRequest\x1a/.org.dash.platform.dapi.v0.GetGroupInfoResponse\x12r\n\rgetGroupInfos\x12/.org.dash.platform.dapi.v0.GetGroupInfosRequest\x1a\x30.org.dash.platform.dapi.v0.GetGroupInfosResponse\x12x\n\x0fgetGroupActions\x12\x31.org.dash.platform.dapi.v0.GetGroupActionsRequest\x1a\x32.org.dash.platform.dapi.v0.GetGroupActionsResponse\x12\x8a\x01\n\x15getGroupActionSigners\x12\x37.org.dash.platform.dapi.v0.GetGroupActionSignersRequest\x1a\x38.org.dash.platform.dapi.v0.GetGroupActionSignersResponse\x12\x8c\x01\n\x17subscribePlatformEvents\x12\x36.org.dash.platform.dapi.v0.PlatformSubscriptionRequest\x1a\x37.org.dash.platform.dapi.v0.PlatformSubscriptionResponse0\x01\x62\x06proto3' , dependencies=[google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) @@ -62,8 +62,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=52346, - serialized_end=52436, + serialized_start=52509, + serialized_end=52599, ) _sym_db.RegisterEnumDescriptor(_KEYPURPOSE) @@ -95,8 +95,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=5548, - serialized_end=5631, + serialized_start=5711, + serialized_end=5794, ) _sym_db.RegisterEnumDescriptor(_SECURITYLEVELMAP_KEYKINDREQUESTTYPE) @@ -125,8 +125,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=23989, - serialized_end=24062, + serialized_start=24152, + serialized_end=24225, ) _sym_db.RegisterEnumDescriptor(_GETCONTESTEDRESOURCEVOTESTATEREQUEST_GETCONTESTEDRESOURCEVOTESTATEREQUESTV0_RESULTTYPE) @@ -155,8 +155,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=24984, - serialized_end=25063, + serialized_start=25147, + serialized_end=25226, ) _sym_db.RegisterEnumDescriptor(_GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0_FINISHEDVOTEINFO_FINISHEDVOTEOUTCOME) @@ -185,8 +185,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=28692, - serialized_end=28753, + serialized_start=28855, + serialized_end=28916, ) _sym_db.RegisterEnumDescriptor(_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0_RESOURCEVOTECHOICE_VOTECHOICETYPE) @@ -210,8 +210,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=47317, - serialized_end=47355, + serialized_start=47480, + serialized_end=47518, ) _sym_db.RegisterEnumDescriptor(_GETGROUPACTIONSREQUEST_ACTIONSTATUS) @@ -235,8 +235,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=48602, - serialized_end=48637, + serialized_start=48765, + serialized_end=48800, ) _sym_db.RegisterEnumDescriptor(_GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_EMERGENCYACTIONEVENT_ACTIONTYPE) @@ -260,8 +260,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=47317, - serialized_end=47355, + serialized_start=47480, + serialized_end=47518, ) _sym_db.RegisterEnumDescriptor(_GETGROUPACTIONSIGNERSREQUEST_ACTIONSTATUS) @@ -416,16 +416,64 @@ ) -_STATETRANSITIONRESULTFILTER = _descriptor.Descriptor( +_PLATFORMFILTERV0_ALLEVENTS = _descriptor.Descriptor( + name='AllEvents', + full_name='org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=953, + serialized_end=964, +) + +_PLATFORMFILTERV0_BLOCKCOMMITTED = _descriptor.Descriptor( + name='BlockCommitted', + full_name='org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted', + filename=None, + file=DESCRIPTOR, + containing_type=None, + create_key=_descriptor._internal_create_key, + fields=[ + ], + extensions=[ + ], + nested_types=[], + enum_types=[ + ], + serialized_options=None, + is_extendable=False, + syntax='proto3', + extension_ranges=[], + oneofs=[ + ], + serialized_start=966, + serialized_end=982, +) + +_PLATFORMFILTERV0_STATETRANSITIONRESULTFILTER = _descriptor.Descriptor( name='StateTransitionResultFilter', - full_name='org.dash.platform.dapi.v0.StateTransitionResultFilter', + full_name='org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter', filename=None, file=DESCRIPTOR, containing_type=None, create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( - name='tx_hash', full_name='org.dash.platform.dapi.v0.StateTransitionResultFilter.tx_hash', index=0, + name='tx_hash', full_name='org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.tx_hash', index=0, number=1, type=12, cpp_type=9, label=1, has_default_value=False, default_value=b"", message_type=None, enum_type=None, containing_type=None, @@ -443,16 +491,15 @@ extension_ranges=[], oneofs=[ _descriptor.OneofDescriptor( - name='_tx_hash', full_name='org.dash.platform.dapi.v0.StateTransitionResultFilter._tx_hash', + name='_tx_hash', full_name='org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter._tx_hash', index=0, containing_type=None, create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=667, - serialized_end=730, + serialized_start=984, + serialized_end=1047, ) - _PLATFORMFILTERV0 = _descriptor.Descriptor( name='PlatformFilterV0', full_name='org.dash.platform.dapi.v0.PlatformFilterV0', @@ -463,15 +510,15 @@ fields=[ _descriptor.FieldDescriptor( name='all', full_name='org.dash.platform.dapi.v0.PlatformFilterV0.all', index=0, - number=1, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, + number=1, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), _descriptor.FieldDescriptor( name='block_committed', full_name='org.dash.platform.dapi.v0.PlatformFilterV0.block_committed', index=1, - number=2, type=8, cpp_type=7, label=1, - has_default_value=False, default_value=False, + number=2, type=11, cpp_type=10, label=1, + has_default_value=False, default_value=None, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), @@ -485,7 +532,7 @@ ], extensions=[ ], - nested_types=[], + nested_types=[_PLATFORMFILTERV0_ALLEVENTS, _PLATFORMFILTERV0_BLOCKCOMMITTED, _PLATFORMFILTERV0_STATETRANSITIONRESULTFILTER, ], enum_types=[ ], serialized_options=None, @@ -499,8 +546,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=733, - serialized_end=892, + serialized_start=668, + serialized_end=1055, ) @@ -545,8 +592,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1182, - serialized_end=1261, + serialized_start=1345, + serialized_end=1424, ) _PLATFORMEVENTV0_BLOCKCOMMITTED = _descriptor.Descriptor( @@ -583,8 +630,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1263, - serialized_end=1369, + serialized_start=1426, + serialized_end=1532, ) _PLATFORMEVENTV0_STATETRANSITIONFINALIZED = _descriptor.Descriptor( @@ -621,8 +668,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1371, - serialized_end=1486, + serialized_start=1534, + serialized_end=1649, ) _PLATFORMEVENTV0_KEEPALIVE = _descriptor.Descriptor( @@ -645,8 +692,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1488, - serialized_end=1499, + serialized_start=1651, + serialized_end=1662, ) _PLATFORMEVENTV0 = _descriptor.Descriptor( @@ -695,8 +742,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=895, - serialized_end=1508, + serialized_start=1058, + serialized_end=1671, ) @@ -762,8 +809,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1511, - serialized_end=1640, + serialized_start=1674, + serialized_end=1803, ) @@ -829,8 +876,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1643, - serialized_end=1795, + serialized_start=1806, + serialized_end=1958, ) @@ -875,8 +922,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1797, - serialized_end=1873, + serialized_start=1960, + serialized_end=2036, ) @@ -907,8 +954,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1875, - serialized_end=1934, + serialized_start=2038, + serialized_end=2097, ) @@ -932,8 +979,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1936, - serialized_end=1970, + serialized_start=2099, + serialized_end=2133, ) @@ -971,8 +1018,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2077, - serialized_end=2126, + serialized_start=2240, + serialized_end=2289, ) _GETIDENTITYREQUEST = _descriptor.Descriptor( @@ -1007,8 +1054,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1973, - serialized_end=2137, + serialized_start=2136, + serialized_end=2300, ) @@ -1046,8 +1093,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2259, - serialized_end=2322, + serialized_start=2422, + serialized_end=2485, ) _GETIDENTITYNONCEREQUEST = _descriptor.Descriptor( @@ -1082,8 +1129,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2140, - serialized_end=2333, + serialized_start=2303, + serialized_end=2496, ) @@ -1128,8 +1175,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2479, - serialized_end=2571, + serialized_start=2642, + serialized_end=2734, ) _GETIDENTITYCONTRACTNONCEREQUEST = _descriptor.Descriptor( @@ -1164,8 +1211,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2336, - serialized_end=2582, + serialized_start=2499, + serialized_end=2745, ) @@ -1203,8 +1250,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2710, - serialized_end=2766, + serialized_start=2873, + serialized_end=2929, ) _GETIDENTITYBALANCEREQUEST = _descriptor.Descriptor( @@ -1239,8 +1286,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2585, - serialized_end=2777, + serialized_start=2748, + serialized_end=2940, ) @@ -1278,8 +1325,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2938, - serialized_end=3005, + serialized_start=3101, + serialized_end=3168, ) _GETIDENTITYBALANCEANDREVISIONREQUEST = _descriptor.Descriptor( @@ -1314,8 +1361,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2780, - serialized_end=3016, + serialized_start=2943, + serialized_end=3179, ) @@ -1365,8 +1412,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3127, - serialized_end=3294, + serialized_start=3290, + serialized_end=3457, ) _GETIDENTITYRESPONSE = _descriptor.Descriptor( @@ -1401,8 +1448,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3019, - serialized_end=3305, + serialized_start=3182, + serialized_end=3468, ) @@ -1452,8 +1499,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3431, - serialized_end=3613, + serialized_start=3594, + serialized_end=3776, ) _GETIDENTITYNONCERESPONSE = _descriptor.Descriptor( @@ -1488,8 +1535,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3308, - serialized_end=3624, + serialized_start=3471, + serialized_end=3787, ) @@ -1539,8 +1586,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3774, - serialized_end=3973, + serialized_start=3937, + serialized_end=4136, ) _GETIDENTITYCONTRACTNONCERESPONSE = _descriptor.Descriptor( @@ -1575,8 +1622,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3627, - serialized_end=3984, + serialized_start=3790, + serialized_end=4147, ) @@ -1626,8 +1673,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4116, - serialized_end=4293, + serialized_start=4279, + serialized_end=4456, ) _GETIDENTITYBALANCERESPONSE = _descriptor.Descriptor( @@ -1662,8 +1709,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3987, - serialized_end=4304, + serialized_start=4150, + serialized_end=4467, ) @@ -1701,8 +1748,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4784, - serialized_end=4847, + serialized_start=4947, + serialized_end=5010, ) _GETIDENTITYBALANCEANDREVISIONRESPONSE_GETIDENTITYBALANCEANDREVISIONRESPONSEV0 = _descriptor.Descriptor( @@ -1751,8 +1798,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4469, - serialized_end=4857, + serialized_start=4632, + serialized_end=5020, ) _GETIDENTITYBALANCEANDREVISIONRESPONSE = _descriptor.Descriptor( @@ -1787,8 +1834,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4307, - serialized_end=4868, + serialized_start=4470, + serialized_end=5031, ) @@ -1838,8 +1885,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4871, - serialized_end=5080, + serialized_start=5034, + serialized_end=5243, ) @@ -1863,8 +1910,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5082, - serialized_end=5091, + serialized_start=5245, + serialized_end=5254, ) @@ -1895,8 +1942,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5093, - serialized_end=5124, + serialized_start=5256, + serialized_end=5287, ) @@ -1934,8 +1981,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5215, - serialized_end=5309, + serialized_start=5378, + serialized_end=5472, ) _SEARCHKEY = _descriptor.Descriptor( @@ -1965,8 +2012,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5127, - serialized_end=5309, + serialized_start=5290, + serialized_end=5472, ) @@ -2004,8 +2051,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5427, - serialized_end=5546, + serialized_start=5590, + serialized_end=5709, ) _SECURITYLEVELMAP = _descriptor.Descriptor( @@ -2036,8 +2083,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5312, - serialized_end=5631, + serialized_start=5475, + serialized_end=5794, ) @@ -2096,8 +2143,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5751, - serialized_end=5969, + serialized_start=5914, + serialized_end=6132, ) _GETIDENTITYKEYSREQUEST = _descriptor.Descriptor( @@ -2132,8 +2179,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=5634, - serialized_end=5980, + serialized_start=5797, + serialized_end=6143, ) @@ -2164,8 +2211,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6345, - serialized_end=6371, + serialized_start=6508, + serialized_end=6534, ) _GETIDENTITYKEYSRESPONSE_GETIDENTITYKEYSRESPONSEV0 = _descriptor.Descriptor( @@ -2214,8 +2261,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6103, - serialized_end=6381, + serialized_start=6266, + serialized_end=6544, ) _GETIDENTITYKEYSRESPONSE = _descriptor.Descriptor( @@ -2250,8 +2297,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=5983, - serialized_end=6392, + serialized_start=6146, + serialized_end=6555, ) @@ -2315,8 +2362,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6542, - serialized_end=6751, + serialized_start=6705, + serialized_end=6914, ) _GETIDENTITIESCONTRACTKEYSREQUEST = _descriptor.Descriptor( @@ -2351,8 +2398,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6395, - serialized_end=6762, + serialized_start=6558, + serialized_end=6925, ) @@ -2390,8 +2437,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7209, - serialized_end=7298, + serialized_start=7372, + serialized_end=7461, ) _GETIDENTITIESCONTRACTKEYSRESPONSE_GETIDENTITIESCONTRACTKEYSRESPONSEV0_IDENTITYKEYS = _descriptor.Descriptor( @@ -2428,8 +2475,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7301, - serialized_end=7460, + serialized_start=7464, + serialized_end=7623, ) _GETIDENTITIESCONTRACTKEYSRESPONSE_GETIDENTITIESCONTRACTKEYSRESPONSEV0_IDENTITIESKEYS = _descriptor.Descriptor( @@ -2459,8 +2506,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7463, - serialized_end=7607, + serialized_start=7626, + serialized_end=7770, ) _GETIDENTITIESCONTRACTKEYSRESPONSE_GETIDENTITIESCONTRACTKEYSRESPONSEV0 = _descriptor.Descriptor( @@ -2509,8 +2556,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6915, - serialized_end=7617, + serialized_start=7078, + serialized_end=7780, ) _GETIDENTITIESCONTRACTKEYSRESPONSE = _descriptor.Descriptor( @@ -2545,8 +2592,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6765, - serialized_end=7628, + serialized_start=6928, + serialized_end=7791, ) @@ -2596,8 +2643,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7808, - serialized_end=7912, + serialized_start=7971, + serialized_end=8075, ) _GETEVONODESPROPOSEDEPOCHBLOCKSBYIDSREQUEST = _descriptor.Descriptor( @@ -2632,8 +2679,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7631, - serialized_end=7923, + serialized_start=7794, + serialized_end=8086, ) @@ -2671,8 +2718,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8429, - serialized_end=8492, + serialized_start=8592, + serialized_end=8655, ) _GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSE_GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSEV0_EVONODESPROPOSEDBLOCKS = _descriptor.Descriptor( @@ -2702,8 +2749,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8495, - serialized_end=8691, + serialized_start=8658, + serialized_end=8854, ) _GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSE_GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSEV0 = _descriptor.Descriptor( @@ -2752,8 +2799,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8091, - serialized_end=8701, + serialized_start=8254, + serialized_end=8864, ) _GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSE = _descriptor.Descriptor( @@ -2788,8 +2835,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7926, - serialized_end=8712, + serialized_start=8089, + serialized_end=8875, ) @@ -2863,8 +2910,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8899, - serialized_end=9074, + serialized_start=9062, + serialized_end=9237, ) _GETEVONODESPROPOSEDEPOCHBLOCKSBYRANGEREQUEST = _descriptor.Descriptor( @@ -2899,8 +2946,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8715, - serialized_end=9085, + serialized_start=8878, + serialized_end=9248, ) @@ -2938,8 +2985,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9222, - serialized_end=9282, + serialized_start=9385, + serialized_end=9445, ) _GETIDENTITIESBALANCESREQUEST = _descriptor.Descriptor( @@ -2974,8 +3021,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9088, - serialized_end=9293, + serialized_start=9251, + serialized_end=9456, ) @@ -3018,8 +3065,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9724, - serialized_end=9800, + serialized_start=9887, + serialized_end=9963, ) _GETIDENTITIESBALANCESRESPONSE_GETIDENTITIESBALANCESRESPONSEV0_IDENTITIESBALANCES = _descriptor.Descriptor( @@ -3049,8 +3096,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9803, - serialized_end=9946, + serialized_start=9966, + serialized_end=10109, ) _GETIDENTITIESBALANCESRESPONSE_GETIDENTITIESBALANCESRESPONSEV0 = _descriptor.Descriptor( @@ -3099,8 +3146,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9434, - serialized_end=9956, + serialized_start=9597, + serialized_end=10119, ) _GETIDENTITIESBALANCESRESPONSE = _descriptor.Descriptor( @@ -3135,8 +3182,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9296, - serialized_end=9967, + serialized_start=9459, + serialized_end=10130, ) @@ -3174,8 +3221,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10086, - serialized_end=10139, + serialized_start=10249, + serialized_end=10302, ) _GETDATACONTRACTREQUEST = _descriptor.Descriptor( @@ -3210,8 +3257,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9970, - serialized_end=10150, + serialized_start=10133, + serialized_end=10313, ) @@ -3261,8 +3308,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10273, - serialized_end=10449, + serialized_start=10436, + serialized_end=10612, ) _GETDATACONTRACTRESPONSE = _descriptor.Descriptor( @@ -3297,8 +3344,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10153, - serialized_end=10460, + serialized_start=10316, + serialized_end=10623, ) @@ -3336,8 +3383,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10582, - serialized_end=10637, + serialized_start=10745, + serialized_end=10800, ) _GETDATACONTRACTSREQUEST = _descriptor.Descriptor( @@ -3372,8 +3419,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10463, - serialized_end=10648, + serialized_start=10626, + serialized_end=10811, ) @@ -3411,8 +3458,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10773, - serialized_end=10864, + serialized_start=10936, + serialized_end=11027, ) _GETDATACONTRACTSRESPONSE_DATACONTRACTS = _descriptor.Descriptor( @@ -3442,8 +3489,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10866, - serialized_end=10983, + serialized_start=11029, + serialized_end=11146, ) _GETDATACONTRACTSRESPONSE_GETDATACONTRACTSRESPONSEV0 = _descriptor.Descriptor( @@ -3492,8 +3539,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10986, - serialized_end=11231, + serialized_start=11149, + serialized_end=11394, ) _GETDATACONTRACTSRESPONSE = _descriptor.Descriptor( @@ -3528,8 +3575,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10651, - serialized_end=11242, + serialized_start=10814, + serialized_end=11405, ) @@ -3588,8 +3635,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11383, - serialized_end=11559, + serialized_start=11546, + serialized_end=11722, ) _GETDATACONTRACTHISTORYREQUEST = _descriptor.Descriptor( @@ -3624,8 +3671,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11245, - serialized_end=11570, + serialized_start=11408, + serialized_end=11733, ) @@ -3663,8 +3710,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12010, - serialized_end=12069, + serialized_start=12173, + serialized_end=12232, ) _GETDATACONTRACTHISTORYRESPONSE_GETDATACONTRACTHISTORYRESPONSEV0_DATACONTRACTHISTORY = _descriptor.Descriptor( @@ -3694,8 +3741,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12072, - serialized_end=12242, + serialized_start=12235, + serialized_end=12405, ) _GETDATACONTRACTHISTORYRESPONSE_GETDATACONTRACTHISTORYRESPONSEV0 = _descriptor.Descriptor( @@ -3744,8 +3791,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11714, - serialized_end=12252, + serialized_start=11877, + serialized_end=12415, ) _GETDATACONTRACTHISTORYRESPONSE = _descriptor.Descriptor( @@ -3780,8 +3827,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11573, - serialized_end=12263, + serialized_start=11736, + serialized_end=12426, ) @@ -3866,8 +3913,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12374, - serialized_end=12561, + serialized_start=12537, + serialized_end=12724, ) _GETDOCUMENTSREQUEST = _descriptor.Descriptor( @@ -3902,8 +3949,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12266, - serialized_end=12572, + serialized_start=12429, + serialized_end=12735, ) @@ -3934,8 +3981,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12929, - serialized_end=12959, + serialized_start=13092, + serialized_end=13122, ) _GETDOCUMENTSRESPONSE_GETDOCUMENTSRESPONSEV0 = _descriptor.Descriptor( @@ -3984,8 +4031,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12686, - serialized_end=12969, + serialized_start=12849, + serialized_end=13132, ) _GETDOCUMENTSRESPONSE = _descriptor.Descriptor( @@ -4020,8 +4067,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12575, - serialized_end=12980, + serialized_start=12738, + serialized_end=13143, ) @@ -4059,8 +4106,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13132, - serialized_end=13209, + serialized_start=13295, + serialized_end=13372, ) _GETIDENTITYBYPUBLICKEYHASHREQUEST = _descriptor.Descriptor( @@ -4095,8 +4142,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12983, - serialized_end=13220, + serialized_start=13146, + serialized_end=13383, ) @@ -4146,8 +4193,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13376, - serialized_end=13558, + serialized_start=13539, + serialized_end=13721, ) _GETIDENTITYBYPUBLICKEYHASHRESPONSE = _descriptor.Descriptor( @@ -4182,8 +4229,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13223, - serialized_end=13569, + serialized_start=13386, + serialized_end=13732, ) @@ -4233,8 +4280,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13750, - serialized_end=13878, + serialized_start=13913, + serialized_end=14041, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHREQUEST = _descriptor.Descriptor( @@ -4269,8 +4316,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13572, - serialized_end=13889, + serialized_start=13735, + serialized_end=14052, ) @@ -4306,8 +4353,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14502, - serialized_end=14556, + serialized_start=14665, + serialized_end=14719, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSE_GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSEV0_IDENTITYPROVEDRESPONSE = _descriptor.Descriptor( @@ -4349,8 +4396,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14559, - serialized_end=14725, + serialized_start=14722, + serialized_end=14888, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSE_GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSEV0 = _descriptor.Descriptor( @@ -4399,8 +4446,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14073, - serialized_end=14735, + serialized_start=14236, + serialized_end=14898, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSE = _descriptor.Descriptor( @@ -4435,8 +4482,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13892, - serialized_end=14746, + serialized_start=14055, + serialized_end=14909, ) @@ -4474,8 +4521,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=14904, - serialized_end=14989, + serialized_start=15067, + serialized_end=15152, ) _WAITFORSTATETRANSITIONRESULTREQUEST = _descriptor.Descriptor( @@ -4510,8 +4557,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14749, - serialized_end=15000, + serialized_start=14912, + serialized_end=15163, ) @@ -4561,8 +4608,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15162, - serialized_end=15401, + serialized_start=15325, + serialized_end=15564, ) _WAITFORSTATETRANSITIONRESULTRESPONSE = _descriptor.Descriptor( @@ -4597,8 +4644,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15003, - serialized_end=15412, + serialized_start=15166, + serialized_end=15575, ) @@ -4636,8 +4683,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15540, - serialized_end=15600, + serialized_start=15703, + serialized_end=15763, ) _GETCONSENSUSPARAMSREQUEST = _descriptor.Descriptor( @@ -4672,8 +4719,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15415, - serialized_end=15611, + serialized_start=15578, + serialized_end=15774, ) @@ -4718,8 +4765,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15742, - serialized_end=15822, + serialized_start=15905, + serialized_end=15985, ) _GETCONSENSUSPARAMSRESPONSE_CONSENSUSPARAMSEVIDENCE = _descriptor.Descriptor( @@ -4763,8 +4810,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15824, - serialized_end=15922, + serialized_start=15987, + serialized_end=16085, ) _GETCONSENSUSPARAMSRESPONSE_GETCONSENSUSPARAMSRESPONSEV0 = _descriptor.Descriptor( @@ -4801,8 +4848,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15925, - serialized_end=16143, + serialized_start=16088, + serialized_end=16306, ) _GETCONSENSUSPARAMSRESPONSE = _descriptor.Descriptor( @@ -4837,8 +4884,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15614, - serialized_end=16154, + serialized_start=15777, + serialized_end=16317, ) @@ -4869,8 +4916,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16318, - serialized_end=16374, + serialized_start=16481, + serialized_end=16537, ) _GETPROTOCOLVERSIONUPGRADESTATEREQUEST = _descriptor.Descriptor( @@ -4905,8 +4952,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16157, - serialized_end=16385, + serialized_start=16320, + serialized_end=16548, ) @@ -4937,8 +4984,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16850, - serialized_end=17000, + serialized_start=17013, + serialized_end=17163, ) _GETPROTOCOLVERSIONUPGRADESTATERESPONSE_GETPROTOCOLVERSIONUPGRADESTATERESPONSEV0_VERSIONENTRY = _descriptor.Descriptor( @@ -4975,8 +5022,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17002, - serialized_end=17060, + serialized_start=17165, + serialized_end=17223, ) _GETPROTOCOLVERSIONUPGRADESTATERESPONSE_GETPROTOCOLVERSIONUPGRADESTATERESPONSEV0 = _descriptor.Descriptor( @@ -5025,8 +5072,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16553, - serialized_end=17070, + serialized_start=16716, + serialized_end=17233, ) _GETPROTOCOLVERSIONUPGRADESTATERESPONSE = _descriptor.Descriptor( @@ -5061,8 +5108,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16388, - serialized_end=17081, + serialized_start=16551, + serialized_end=17244, ) @@ -5107,8 +5154,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17261, - serialized_end=17364, + serialized_start=17424, + serialized_end=17527, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSREQUEST = _descriptor.Descriptor( @@ -5143,8 +5190,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=17084, - serialized_end=17375, + serialized_start=17247, + serialized_end=17538, ) @@ -5175,8 +5222,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17878, - serialized_end=18053, + serialized_start=18041, + serialized_end=18216, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSE_GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSEV0_VERSIONSIGNAL = _descriptor.Descriptor( @@ -5213,8 +5260,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18055, - serialized_end=18108, + serialized_start=18218, + serialized_end=18271, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSE_GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSEV0 = _descriptor.Descriptor( @@ -5263,8 +5310,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=17559, - serialized_end=18118, + serialized_start=17722, + serialized_end=18281, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSE = _descriptor.Descriptor( @@ -5299,8 +5346,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=17378, - serialized_end=18129, + serialized_start=17541, + serialized_end=18292, ) @@ -5352,8 +5399,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18242, - serialized_end=18366, + serialized_start=18405, + serialized_end=18529, ) _GETEPOCHSINFOREQUEST = _descriptor.Descriptor( @@ -5388,8 +5435,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18132, - serialized_end=18377, + serialized_start=18295, + serialized_end=18540, ) @@ -5420,8 +5467,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18738, - serialized_end=18855, + serialized_start=18901, + serialized_end=19018, ) _GETEPOCHSINFORESPONSE_GETEPOCHSINFORESPONSEV0_EPOCHINFO = _descriptor.Descriptor( @@ -5486,8 +5533,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18858, - serialized_end=19024, + serialized_start=19021, + serialized_end=19187, ) _GETEPOCHSINFORESPONSE_GETEPOCHSINFORESPONSEV0 = _descriptor.Descriptor( @@ -5536,8 +5583,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18494, - serialized_end=19034, + serialized_start=18657, + serialized_end=19197, ) _GETEPOCHSINFORESPONSE = _descriptor.Descriptor( @@ -5572,8 +5619,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18380, - serialized_end=19045, + serialized_start=18543, + serialized_end=19208, ) @@ -5632,8 +5679,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19186, - serialized_end=19356, + serialized_start=19349, + serialized_end=19519, ) _GETFINALIZEDEPOCHINFOSREQUEST = _descriptor.Descriptor( @@ -5668,8 +5715,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19048, - serialized_end=19367, + serialized_start=19211, + serialized_end=19530, ) @@ -5700,8 +5747,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19793, - serialized_end=19957, + serialized_start=19956, + serialized_end=20120, ) _GETFINALIZEDEPOCHINFOSRESPONSE_GETFINALIZEDEPOCHINFOSRESPONSEV0_FINALIZEDEPOCHINFO = _descriptor.Descriptor( @@ -5815,8 +5862,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19960, - serialized_end=20503, + serialized_start=20123, + serialized_end=20666, ) _GETFINALIZEDEPOCHINFOSRESPONSE_GETFINALIZEDEPOCHINFOSRESPONSEV0_BLOCKPROPOSER = _descriptor.Descriptor( @@ -5853,8 +5900,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20505, - serialized_end=20562, + serialized_start=20668, + serialized_end=20725, ) _GETFINALIZEDEPOCHINFOSRESPONSE_GETFINALIZEDEPOCHINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -5903,8 +5950,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19511, - serialized_end=20572, + serialized_start=19674, + serialized_end=20735, ) _GETFINALIZEDEPOCHINFOSRESPONSE = _descriptor.Descriptor( @@ -5939,8 +5986,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19370, - serialized_end=20583, + serialized_start=19533, + serialized_end=20746, ) @@ -5978,8 +6025,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=21078, - serialized_end=21147, + serialized_start=21241, + serialized_end=21310, ) _GETCONTESTEDRESOURCESREQUEST_GETCONTESTEDRESOURCESREQUESTV0 = _descriptor.Descriptor( @@ -6075,8 +6122,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=20721, - serialized_end=21181, + serialized_start=20884, + serialized_end=21344, ) _GETCONTESTEDRESOURCESREQUEST = _descriptor.Descriptor( @@ -6111,8 +6158,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=20586, - serialized_end=21192, + serialized_start=20749, + serialized_end=21355, ) @@ -6143,8 +6190,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=21634, - serialized_end=21694, + serialized_start=21797, + serialized_end=21857, ) _GETCONTESTEDRESOURCESRESPONSE_GETCONTESTEDRESOURCESRESPONSEV0 = _descriptor.Descriptor( @@ -6193,8 +6240,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21333, - serialized_end=21704, + serialized_start=21496, + serialized_end=21867, ) _GETCONTESTEDRESOURCESRESPONSE = _descriptor.Descriptor( @@ -6229,8 +6276,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21195, - serialized_end=21715, + serialized_start=21358, + serialized_end=21878, ) @@ -6268,8 +6315,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=22228, - serialized_end=22301, + serialized_start=22391, + serialized_end=22464, ) _GETVOTEPOLLSBYENDDATEREQUEST_GETVOTEPOLLSBYENDDATEREQUESTV0_ENDATTIMEINFO = _descriptor.Descriptor( @@ -6306,8 +6353,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=22303, - serialized_end=22370, + serialized_start=22466, + serialized_end=22533, ) _GETVOTEPOLLSBYENDDATEREQUEST_GETVOTEPOLLSBYENDDATEREQUESTV0 = _descriptor.Descriptor( @@ -6392,8 +6439,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21853, - serialized_end=22429, + serialized_start=22016, + serialized_end=22592, ) _GETVOTEPOLLSBYENDDATEREQUEST = _descriptor.Descriptor( @@ -6428,8 +6475,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21718, - serialized_end=22440, + serialized_start=21881, + serialized_end=22603, ) @@ -6467,8 +6514,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=22889, - serialized_end=22975, + serialized_start=23052, + serialized_end=23138, ) _GETVOTEPOLLSBYENDDATERESPONSE_GETVOTEPOLLSBYENDDATERESPONSEV0_SERIALIZEDVOTEPOLLSBYTIMESTAMPS = _descriptor.Descriptor( @@ -6505,8 +6552,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=22978, - serialized_end=23193, + serialized_start=23141, + serialized_end=23356, ) _GETVOTEPOLLSBYENDDATERESPONSE_GETVOTEPOLLSBYENDDATERESPONSEV0 = _descriptor.Descriptor( @@ -6555,8 +6602,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=22581, - serialized_end=23203, + serialized_start=22744, + serialized_end=23366, ) _GETVOTEPOLLSBYENDDATERESPONSE = _descriptor.Descriptor( @@ -6591,8 +6638,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=22443, - serialized_end=23214, + serialized_start=22606, + serialized_end=23377, ) @@ -6630,8 +6677,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=23903, - serialized_end=23987, + serialized_start=24066, + serialized_end=24150, ) _GETCONTESTEDRESOURCEVOTESTATEREQUEST_GETCONTESTEDRESOURCEVOTESTATEREQUESTV0 = _descriptor.Descriptor( @@ -6728,8 +6775,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=23376, - serialized_end=24101, + serialized_start=23539, + serialized_end=24264, ) _GETCONTESTEDRESOURCEVOTESTATEREQUEST = _descriptor.Descriptor( @@ -6764,8 +6811,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=23217, - serialized_end=24112, + serialized_start=23380, + serialized_end=24275, ) @@ -6837,8 +6884,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24612, - serialized_end=25086, + serialized_start=24775, + serialized_end=25249, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0_CONTESTEDRESOURCECONTENDERS = _descriptor.Descriptor( @@ -6904,8 +6951,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25089, - serialized_end=25541, + serialized_start=25252, + serialized_end=25704, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0_CONTENDER = _descriptor.Descriptor( @@ -6959,8 +7006,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25543, - serialized_end=25650, + serialized_start=25706, + serialized_end=25813, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0 = _descriptor.Descriptor( @@ -7009,8 +7056,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24277, - serialized_end=25660, + serialized_start=24440, + serialized_end=25823, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE = _descriptor.Descriptor( @@ -7045,8 +7092,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24115, - serialized_end=25671, + serialized_start=24278, + serialized_end=25834, ) @@ -7084,8 +7131,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=23903, - serialized_end=23987, + serialized_start=24066, + serialized_end=24150, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYREQUEST_GETCONTESTEDRESOURCEVOTERSFORIDENTITYREQUESTV0 = _descriptor.Descriptor( @@ -7181,8 +7228,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25858, - serialized_end=26388, + serialized_start=26021, + serialized_end=26551, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYREQUEST = _descriptor.Descriptor( @@ -7217,8 +7264,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25674, - serialized_end=26399, + serialized_start=25837, + serialized_end=26562, ) @@ -7256,8 +7303,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=26939, - serialized_end=27006, + serialized_start=27102, + serialized_end=27169, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYRESPONSE_GETCONTESTEDRESOURCEVOTERSFORIDENTITYRESPONSEV0 = _descriptor.Descriptor( @@ -7306,8 +7353,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=26589, - serialized_end=27016, + serialized_start=26752, + serialized_end=27179, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYRESPONSE = _descriptor.Descriptor( @@ -7342,8 +7389,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=26402, - serialized_end=27027, + serialized_start=26565, + serialized_end=27190, ) @@ -7381,8 +7428,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=27576, - serialized_end=27673, + serialized_start=27739, + serialized_end=27836, ) _GETCONTESTEDRESOURCEIDENTITYVOTESREQUEST_GETCONTESTEDRESOURCEIDENTITYVOTESREQUESTV0 = _descriptor.Descriptor( @@ -7452,8 +7499,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27201, - serialized_end=27704, + serialized_start=27364, + serialized_end=27867, ) _GETCONTESTEDRESOURCEIDENTITYVOTESREQUEST = _descriptor.Descriptor( @@ -7488,8 +7535,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27030, - serialized_end=27715, + serialized_start=27193, + serialized_end=27878, ) @@ -7527,8 +7574,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=28218, - serialized_end=28465, + serialized_start=28381, + serialized_end=28628, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0_RESOURCEVOTECHOICE = _descriptor.Descriptor( @@ -7571,8 +7618,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=28468, - serialized_end=28769, + serialized_start=28631, + serialized_end=28932, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0_CONTESTEDRESOURCEIDENTITYVOTE = _descriptor.Descriptor( @@ -7623,8 +7670,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=28772, - serialized_end=29049, + serialized_start=28935, + serialized_end=29212, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0 = _descriptor.Descriptor( @@ -7673,8 +7720,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27892, - serialized_end=29059, + serialized_start=28055, + serialized_end=29222, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE = _descriptor.Descriptor( @@ -7709,8 +7756,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27718, - serialized_end=29070, + serialized_start=27881, + serialized_end=29233, ) @@ -7748,8 +7795,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=29234, - serialized_end=29302, + serialized_start=29397, + serialized_end=29465, ) _GETPREFUNDEDSPECIALIZEDBALANCEREQUEST = _descriptor.Descriptor( @@ -7784,8 +7831,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29073, - serialized_end=29313, + serialized_start=29236, + serialized_end=29476, ) @@ -7835,8 +7882,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29481, - serialized_end=29670, + serialized_start=29644, + serialized_end=29833, ) _GETPREFUNDEDSPECIALIZEDBALANCERESPONSE = _descriptor.Descriptor( @@ -7871,8 +7918,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29316, - serialized_end=29681, + serialized_start=29479, + serialized_end=29844, ) @@ -7903,8 +7950,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=29830, - serialized_end=29881, + serialized_start=29993, + serialized_end=30044, ) _GETTOTALCREDITSINPLATFORMREQUEST = _descriptor.Descriptor( @@ -7939,8 +7986,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29684, - serialized_end=29892, + serialized_start=29847, + serialized_end=30055, ) @@ -7990,8 +8037,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30045, - serialized_end=30229, + serialized_start=30208, + serialized_end=30392, ) _GETTOTALCREDITSINPLATFORMRESPONSE = _descriptor.Descriptor( @@ -8026,8 +8073,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29895, - serialized_end=30240, + serialized_start=30058, + serialized_end=30403, ) @@ -8072,8 +8119,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30359, - serialized_end=30428, + serialized_start=30522, + serialized_end=30591, ) _GETPATHELEMENTSREQUEST = _descriptor.Descriptor( @@ -8108,8 +8155,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30243, - serialized_end=30439, + serialized_start=30406, + serialized_end=30602, ) @@ -8140,8 +8187,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30812, - serialized_end=30840, + serialized_start=30975, + serialized_end=31003, ) _GETPATHELEMENTSRESPONSE_GETPATHELEMENTSRESPONSEV0 = _descriptor.Descriptor( @@ -8190,8 +8237,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30562, - serialized_end=30850, + serialized_start=30725, + serialized_end=31013, ) _GETPATHELEMENTSRESPONSE = _descriptor.Descriptor( @@ -8226,8 +8273,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30442, - serialized_end=30861, + serialized_start=30605, + serialized_end=31024, ) @@ -8251,8 +8298,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30962, - serialized_end=30982, + serialized_start=31125, + serialized_end=31145, ) _GETSTATUSREQUEST = _descriptor.Descriptor( @@ -8287,8 +8334,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30864, - serialized_end=30993, + serialized_start=31027, + serialized_end=31156, ) @@ -8343,8 +8390,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=31870, - serialized_end=31964, + serialized_start=32033, + serialized_end=32127, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION_PROTOCOL_TENDERDASH = _descriptor.Descriptor( @@ -8381,8 +8428,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32197, - serialized_end=32237, + serialized_start=32360, + serialized_end=32400, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION_PROTOCOL_DRIVE = _descriptor.Descriptor( @@ -8426,8 +8473,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32239, - serialized_end=32299, + serialized_start=32402, + serialized_end=32462, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION_PROTOCOL = _descriptor.Descriptor( @@ -8464,8 +8511,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=31967, - serialized_end=32299, + serialized_start=32130, + serialized_end=32462, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION = _descriptor.Descriptor( @@ -8502,8 +8549,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=31657, - serialized_end=32299, + serialized_start=31820, + serialized_end=32462, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_TIME = _descriptor.Descriptor( @@ -8569,8 +8616,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=32301, - serialized_end=32428, + serialized_start=32464, + serialized_end=32591, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_NODE = _descriptor.Descriptor( @@ -8612,8 +8659,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=32430, - serialized_end=32490, + serialized_start=32593, + serialized_end=32653, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_CHAIN = _descriptor.Descriptor( @@ -8704,8 +8751,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=32493, - serialized_end=32800, + serialized_start=32656, + serialized_end=32963, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_NETWORK = _descriptor.Descriptor( @@ -8749,8 +8796,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32802, - serialized_end=32869, + serialized_start=32965, + serialized_end=33032, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_STATESYNC = _descriptor.Descriptor( @@ -8829,8 +8876,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32872, - serialized_end=33133, + serialized_start=33035, + serialized_end=33296, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0 = _descriptor.Descriptor( @@ -8895,8 +8942,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=31098, - serialized_end=33133, + serialized_start=31261, + serialized_end=33296, ) _GETSTATUSRESPONSE = _descriptor.Descriptor( @@ -8931,8 +8978,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30996, - serialized_end=33144, + serialized_start=31159, + serialized_end=33307, ) @@ -8956,8 +9003,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33281, - serialized_end=33313, + serialized_start=33444, + serialized_end=33476, ) _GETCURRENTQUORUMSINFOREQUEST = _descriptor.Descriptor( @@ -8992,8 +9039,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=33147, - serialized_end=33324, + serialized_start=33310, + serialized_end=33487, ) @@ -9038,8 +9085,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33464, - serialized_end=33534, + serialized_start=33627, + serialized_end=33697, ) _GETCURRENTQUORUMSINFORESPONSE_VALIDATORSETV0 = _descriptor.Descriptor( @@ -9090,8 +9137,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33537, - serialized_end=33712, + serialized_start=33700, + serialized_end=33875, ) _GETCURRENTQUORUMSINFORESPONSE_GETCURRENTQUORUMSINFORESPONSEV0 = _descriptor.Descriptor( @@ -9149,8 +9196,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33715, - serialized_end=33989, + serialized_start=33878, + serialized_end=34152, ) _GETCURRENTQUORUMSINFORESPONSE = _descriptor.Descriptor( @@ -9185,8 +9232,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=33327, - serialized_end=34000, + serialized_start=33490, + serialized_end=34163, ) @@ -9231,8 +9278,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=34146, - serialized_end=34236, + serialized_start=34309, + serialized_end=34399, ) _GETIDENTITYTOKENBALANCESREQUEST = _descriptor.Descriptor( @@ -9267,8 +9314,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34003, - serialized_end=34247, + serialized_start=34166, + serialized_end=34410, ) @@ -9311,8 +9358,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34686, - serialized_end=34757, + serialized_start=34849, + serialized_end=34920, ) _GETIDENTITYTOKENBALANCESRESPONSE_GETIDENTITYTOKENBALANCESRESPONSEV0_TOKENBALANCES = _descriptor.Descriptor( @@ -9342,8 +9389,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=34760, - serialized_end=34914, + serialized_start=34923, + serialized_end=35077, ) _GETIDENTITYTOKENBALANCESRESPONSE_GETIDENTITYTOKENBALANCESRESPONSEV0 = _descriptor.Descriptor( @@ -9392,8 +9439,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34397, - serialized_end=34924, + serialized_start=34560, + serialized_end=35087, ) _GETIDENTITYTOKENBALANCESRESPONSE = _descriptor.Descriptor( @@ -9428,8 +9475,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34250, - serialized_end=34935, + serialized_start=34413, + serialized_end=35098, ) @@ -9474,8 +9521,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=35087, - serialized_end=35179, + serialized_start=35250, + serialized_end=35342, ) _GETIDENTITIESTOKENBALANCESREQUEST = _descriptor.Descriptor( @@ -9510,8 +9557,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34938, - serialized_end=35190, + serialized_start=35101, + serialized_end=35353, ) @@ -9554,8 +9601,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35658, - serialized_end=35740, + serialized_start=35821, + serialized_end=35903, ) _GETIDENTITIESTOKENBALANCESRESPONSE_GETIDENTITIESTOKENBALANCESRESPONSEV0_IDENTITYTOKENBALANCES = _descriptor.Descriptor( @@ -9585,8 +9632,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=35743, - serialized_end=35926, + serialized_start=35906, + serialized_end=36089, ) _GETIDENTITIESTOKENBALANCESRESPONSE_GETIDENTITIESTOKENBALANCESRESPONSEV0 = _descriptor.Descriptor( @@ -9635,8 +9682,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35346, - serialized_end=35936, + serialized_start=35509, + serialized_end=36099, ) _GETIDENTITIESTOKENBALANCESRESPONSE = _descriptor.Descriptor( @@ -9671,8 +9718,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35193, - serialized_end=35947, + serialized_start=35356, + serialized_end=36110, ) @@ -9717,8 +9764,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36084, - serialized_end=36171, + serialized_start=36247, + serialized_end=36334, ) _GETIDENTITYTOKENINFOSREQUEST = _descriptor.Descriptor( @@ -9753,8 +9800,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35950, - serialized_end=36182, + serialized_start=36113, + serialized_end=36345, ) @@ -9785,8 +9832,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36596, - serialized_end=36636, + serialized_start=36759, + serialized_end=36799, ) _GETIDENTITYTOKENINFOSRESPONSE_GETIDENTITYTOKENINFOSRESPONSEV0_TOKENINFOENTRY = _descriptor.Descriptor( @@ -9828,8 +9875,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36639, - serialized_end=36815, + serialized_start=36802, + serialized_end=36978, ) _GETIDENTITYTOKENINFOSRESPONSE_GETIDENTITYTOKENINFOSRESPONSEV0_TOKENINFOS = _descriptor.Descriptor( @@ -9859,8 +9906,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36818, - serialized_end=36956, + serialized_start=36981, + serialized_end=37119, ) _GETIDENTITYTOKENINFOSRESPONSE_GETIDENTITYTOKENINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -9909,8 +9956,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36323, - serialized_end=36966, + serialized_start=36486, + serialized_end=37129, ) _GETIDENTITYTOKENINFOSRESPONSE = _descriptor.Descriptor( @@ -9945,8 +9992,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36185, - serialized_end=36977, + serialized_start=36348, + serialized_end=37140, ) @@ -9991,8 +10038,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=37120, - serialized_end=37209, + serialized_start=37283, + serialized_end=37372, ) _GETIDENTITIESTOKENINFOSREQUEST = _descriptor.Descriptor( @@ -10027,8 +10074,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36980, - serialized_end=37220, + serialized_start=37143, + serialized_end=37383, ) @@ -10059,8 +10106,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36596, - serialized_end=36636, + serialized_start=36759, + serialized_end=36799, ) _GETIDENTITIESTOKENINFOSRESPONSE_GETIDENTITIESTOKENINFOSRESPONSEV0_TOKENINFOENTRY = _descriptor.Descriptor( @@ -10102,8 +10149,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37707, - serialized_end=37890, + serialized_start=37870, + serialized_end=38053, ) _GETIDENTITIESTOKENINFOSRESPONSE_GETIDENTITIESTOKENINFOSRESPONSEV0_IDENTITYTOKENINFOS = _descriptor.Descriptor( @@ -10133,8 +10180,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=37893, - serialized_end=38044, + serialized_start=38056, + serialized_end=38207, ) _GETIDENTITIESTOKENINFOSRESPONSE_GETIDENTITIESTOKENINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -10183,8 +10230,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37367, - serialized_end=38054, + serialized_start=37530, + serialized_end=38217, ) _GETIDENTITIESTOKENINFOSRESPONSE = _descriptor.Descriptor( @@ -10219,8 +10266,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37223, - serialized_end=38065, + serialized_start=37386, + serialized_end=38228, ) @@ -10258,8 +10305,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=38187, - serialized_end=38248, + serialized_start=38350, + serialized_end=38411, ) _GETTOKENSTATUSESREQUEST = _descriptor.Descriptor( @@ -10294,8 +10341,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38068, - serialized_end=38259, + serialized_start=38231, + serialized_end=38422, ) @@ -10338,8 +10385,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38649, - serialized_end=38717, + serialized_start=38812, + serialized_end=38880, ) _GETTOKENSTATUSESRESPONSE_GETTOKENSTATUSESRESPONSEV0_TOKENSTATUSES = _descriptor.Descriptor( @@ -10369,8 +10416,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=38720, - serialized_end=38856, + serialized_start=38883, + serialized_end=39019, ) _GETTOKENSTATUSESRESPONSE_GETTOKENSTATUSESRESPONSEV0 = _descriptor.Descriptor( @@ -10419,8 +10466,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38385, - serialized_end=38866, + serialized_start=38548, + serialized_end=39029, ) _GETTOKENSTATUSESRESPONSE = _descriptor.Descriptor( @@ -10455,8 +10502,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38262, - serialized_end=38877, + serialized_start=38425, + serialized_end=39040, ) @@ -10494,8 +10541,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39035, - serialized_end=39108, + serialized_start=39198, + serialized_end=39271, ) _GETTOKENDIRECTPURCHASEPRICESREQUEST = _descriptor.Descriptor( @@ -10530,8 +10577,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38880, - serialized_end=39119, + serialized_start=39043, + serialized_end=39282, ) @@ -10569,8 +10616,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39609, - serialized_end=39660, + serialized_start=39772, + serialized_end=39823, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0_PRICINGSCHEDULE = _descriptor.Descriptor( @@ -10600,8 +10647,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39663, - serialized_end=39830, + serialized_start=39826, + serialized_end=39993, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0_TOKENDIRECTPURCHASEPRICEENTRY = _descriptor.Descriptor( @@ -10650,8 +10697,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39833, - serialized_end=40061, + serialized_start=39996, + serialized_end=40224, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0_TOKENDIRECTPURCHASEPRICES = _descriptor.Descriptor( @@ -10681,8 +10728,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=40064, - serialized_end=40264, + serialized_start=40227, + serialized_end=40427, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0 = _descriptor.Descriptor( @@ -10731,8 +10778,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39281, - serialized_end=40274, + serialized_start=39444, + serialized_end=40437, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE = _descriptor.Descriptor( @@ -10767,8 +10814,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39122, - serialized_end=40285, + serialized_start=39285, + serialized_end=40448, ) @@ -10806,8 +10853,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=40419, - serialized_end=40483, + serialized_start=40582, + serialized_end=40646, ) _GETTOKENCONTRACTINFOREQUEST = _descriptor.Descriptor( @@ -10842,8 +10889,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40288, - serialized_end=40494, + serialized_start=40451, + serialized_end=40657, ) @@ -10881,8 +10928,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=40906, - serialized_end=40983, + serialized_start=41069, + serialized_end=41146, ) _GETTOKENCONTRACTINFORESPONSE_GETTOKENCONTRACTINFORESPONSEV0 = _descriptor.Descriptor( @@ -10931,8 +10978,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40632, - serialized_end=40993, + serialized_start=40795, + serialized_end=41156, ) _GETTOKENCONTRACTINFORESPONSE = _descriptor.Descriptor( @@ -10967,8 +11014,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40497, - serialized_end=41004, + serialized_start=40660, + serialized_end=41167, ) @@ -11023,8 +11070,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41437, - serialized_end=41591, + serialized_start=41600, + serialized_end=41754, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSREQUEST_GETTOKENPREPROGRAMMEDDISTRIBUTIONSREQUESTV0 = _descriptor.Descriptor( @@ -11085,8 +11132,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41181, - serialized_end=41619, + serialized_start=41344, + serialized_end=41782, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSREQUEST = _descriptor.Descriptor( @@ -11121,8 +11168,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41007, - serialized_end=41630, + serialized_start=41170, + serialized_end=41793, ) @@ -11160,8 +11207,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42141, - serialized_end=42203, + serialized_start=42304, + serialized_end=42366, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE_GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSEV0_TOKENTIMEDDISTRIBUTIONENTRY = _descriptor.Descriptor( @@ -11198,8 +11245,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42206, - serialized_end=42418, + serialized_start=42369, + serialized_end=42581, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE_GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSEV0_TOKENDISTRIBUTIONS = _descriptor.Descriptor( @@ -11229,8 +11276,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42421, - serialized_end=42616, + serialized_start=42584, + serialized_end=42779, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE_GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSEV0 = _descriptor.Descriptor( @@ -11279,8 +11326,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41811, - serialized_end=42626, + serialized_start=41974, + serialized_end=42789, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE = _descriptor.Descriptor( @@ -11315,8 +11362,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41633, - serialized_end=42637, + serialized_start=41796, + serialized_end=42800, ) @@ -11354,8 +11401,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42826, - serialized_end=42899, + serialized_start=42989, + serialized_end=43062, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMREQUEST_GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMREQUESTV0 = _descriptor.Descriptor( @@ -11411,8 +11458,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=42902, - serialized_end=43143, + serialized_start=43065, + serialized_end=43306, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMREQUEST = _descriptor.Descriptor( @@ -11447,8 +11494,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=42640, - serialized_end=43154, + serialized_start=42803, + serialized_end=43317, ) @@ -11505,8 +11552,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43675, - serialized_end=43795, + serialized_start=43838, + serialized_end=43958, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMRESPONSE_GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMRESPONSEV0 = _descriptor.Descriptor( @@ -11555,8 +11602,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43347, - serialized_end=43805, + serialized_start=43510, + serialized_end=43968, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMRESPONSE = _descriptor.Descriptor( @@ -11591,8 +11638,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43157, - serialized_end=43816, + serialized_start=43320, + serialized_end=43979, ) @@ -11630,8 +11677,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=43947, - serialized_end=44010, + serialized_start=44110, + serialized_end=44173, ) _GETTOKENTOTALSUPPLYREQUEST = _descriptor.Descriptor( @@ -11666,8 +11713,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43819, - serialized_end=44021, + serialized_start=43982, + serialized_end=44184, ) @@ -11712,8 +11759,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=44442, - serialized_end=44562, + serialized_start=44605, + serialized_end=44725, ) _GETTOKENTOTALSUPPLYRESPONSE_GETTOKENTOTALSUPPLYRESPONSEV0 = _descriptor.Descriptor( @@ -11762,8 +11809,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44156, - serialized_end=44572, + serialized_start=44319, + serialized_end=44735, ) _GETTOKENTOTALSUPPLYRESPONSE = _descriptor.Descriptor( @@ -11798,8 +11845,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44024, - serialized_end=44583, + serialized_start=44187, + serialized_end=44746, ) @@ -11844,8 +11891,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=44693, - serialized_end=44785, + serialized_start=44856, + serialized_end=44948, ) _GETGROUPINFOREQUEST = _descriptor.Descriptor( @@ -11880,8 +11927,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44586, - serialized_end=44796, + serialized_start=44749, + serialized_end=44959, ) @@ -11919,8 +11966,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45154, - serialized_end=45206, + serialized_start=45317, + serialized_end=45369, ) _GETGROUPINFORESPONSE_GETGROUPINFORESPONSEV0_GROUPINFOENTRY = _descriptor.Descriptor( @@ -11957,8 +12004,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45209, - serialized_end=45361, + serialized_start=45372, + serialized_end=45524, ) _GETGROUPINFORESPONSE_GETGROUPINFORESPONSEV0_GROUPINFO = _descriptor.Descriptor( @@ -11993,8 +12040,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45364, - serialized_end=45502, + serialized_start=45527, + serialized_end=45665, ) _GETGROUPINFORESPONSE_GETGROUPINFORESPONSEV0 = _descriptor.Descriptor( @@ -12043,8 +12090,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44910, - serialized_end=45512, + serialized_start=45073, + serialized_end=45675, ) _GETGROUPINFORESPONSE = _descriptor.Descriptor( @@ -12079,8 +12126,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44799, - serialized_end=45523, + serialized_start=44962, + serialized_end=45686, ) @@ -12118,8 +12165,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45636, - serialized_end=45753, + serialized_start=45799, + serialized_end=45916, ) _GETGROUPINFOSREQUEST_GETGROUPINFOSREQUESTV0 = _descriptor.Descriptor( @@ -12180,8 +12227,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45756, - serialized_end=46008, + serialized_start=45919, + serialized_end=46171, ) _GETGROUPINFOSREQUEST = _descriptor.Descriptor( @@ -12216,8 +12263,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45526, - serialized_end=46019, + serialized_start=45689, + serialized_end=46182, ) @@ -12255,8 +12302,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45154, - serialized_end=45206, + serialized_start=45317, + serialized_end=45369, ) _GETGROUPINFOSRESPONSE_GETGROUPINFOSRESPONSEV0_GROUPPOSITIONINFOENTRY = _descriptor.Descriptor( @@ -12300,8 +12347,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=46440, - serialized_end=46635, + serialized_start=46603, + serialized_end=46798, ) _GETGROUPINFOSRESPONSE_GETGROUPINFOSRESPONSEV0_GROUPINFOS = _descriptor.Descriptor( @@ -12331,8 +12378,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=46638, - serialized_end=46768, + serialized_start=46801, + serialized_end=46931, ) _GETGROUPINFOSRESPONSE_GETGROUPINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -12381,8 +12428,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46136, - serialized_end=46778, + serialized_start=46299, + serialized_end=46941, ) _GETGROUPINFOSRESPONSE = _descriptor.Descriptor( @@ -12417,8 +12464,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46022, - serialized_end=46789, + serialized_start=46185, + serialized_end=46952, ) @@ -12456,8 +12503,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=46908, - serialized_end=46984, + serialized_start=47071, + serialized_end=47147, ) _GETGROUPACTIONSREQUEST_GETGROUPACTIONSREQUESTV0 = _descriptor.Descriptor( @@ -12532,8 +12579,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46987, - serialized_end=47315, + serialized_start=47150, + serialized_end=47478, ) _GETGROUPACTIONSREQUEST = _descriptor.Descriptor( @@ -12569,8 +12616,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46792, - serialized_end=47366, + serialized_start=46955, + serialized_end=47529, ) @@ -12620,8 +12667,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47748, - serialized_end=47839, + serialized_start=47911, + serialized_end=48002, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_BURNEVENT = _descriptor.Descriptor( @@ -12670,8 +12717,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47841, - serialized_end=47932, + serialized_start=48004, + serialized_end=48095, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_FREEZEEVENT = _descriptor.Descriptor( @@ -12713,8 +12760,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47934, - serialized_end=48008, + serialized_start=48097, + serialized_end=48171, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UNFREEZEEVENT = _descriptor.Descriptor( @@ -12756,8 +12803,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48010, - serialized_end=48086, + serialized_start=48173, + serialized_end=48249, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_DESTROYFROZENFUNDSEVENT = _descriptor.Descriptor( @@ -12806,8 +12853,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48088, - serialized_end=48190, + serialized_start=48251, + serialized_end=48353, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_SHAREDENCRYPTEDNOTE = _descriptor.Descriptor( @@ -12851,8 +12898,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=48192, - serialized_end=48292, + serialized_start=48355, + serialized_end=48455, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_PERSONALENCRYPTEDNOTE = _descriptor.Descriptor( @@ -12896,8 +12943,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=48294, - serialized_end=48417, + serialized_start=48457, + serialized_end=48580, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_EMERGENCYACTIONEVENT = _descriptor.Descriptor( @@ -12940,8 +12987,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48420, - serialized_end=48653, + serialized_start=48583, + serialized_end=48816, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_TOKENCONFIGUPDATEEVENT = _descriptor.Descriptor( @@ -12983,8 +13030,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48655, - serialized_end=48755, + serialized_start=48818, + serialized_end=48918, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UPDATEDIRECTPURCHASEPRICEEVENT_PRICEFORQUANTITY = _descriptor.Descriptor( @@ -13021,8 +13068,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39609, - serialized_end=39660, + serialized_start=39772, + serialized_end=39823, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UPDATEDIRECTPURCHASEPRICEEVENT_PRICINGSCHEDULE = _descriptor.Descriptor( @@ -13052,8 +13099,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=49047, - serialized_end=49219, + serialized_start=49210, + serialized_end=49382, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UPDATEDIRECTPURCHASEPRICEEVENT = _descriptor.Descriptor( @@ -13107,8 +13154,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48758, - serialized_end=49244, + serialized_start=48921, + serialized_end=49407, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_GROUPACTIONEVENT = _descriptor.Descriptor( @@ -13157,8 +13204,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=49247, - serialized_end=49627, + serialized_start=49410, + serialized_end=49790, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_DOCUMENTEVENT = _descriptor.Descriptor( @@ -13193,8 +13240,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=49630, - serialized_end=49769, + serialized_start=49793, + serialized_end=49932, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_DOCUMENTCREATEEVENT = _descriptor.Descriptor( @@ -13224,8 +13271,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=49771, - serialized_end=49818, + serialized_start=49934, + serialized_end=49981, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_CONTRACTUPDATEEVENT = _descriptor.Descriptor( @@ -13255,8 +13302,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=49820, - serialized_end=49867, + serialized_start=49983, + serialized_end=50030, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_CONTRACTEVENT = _descriptor.Descriptor( @@ -13291,8 +13338,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=49870, - serialized_end=50009, + serialized_start=50033, + serialized_end=50172, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_TOKENEVENT = _descriptor.Descriptor( @@ -13376,8 +13423,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=50012, - serialized_end=50989, + serialized_start=50175, + serialized_end=51152, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_GROUPACTIONENTRY = _descriptor.Descriptor( @@ -13414,8 +13461,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=50992, - serialized_end=51139, + serialized_start=51155, + serialized_end=51302, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_GROUPACTIONS = _descriptor.Descriptor( @@ -13445,8 +13492,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=51142, - serialized_end=51274, + serialized_start=51305, + serialized_end=51437, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0 = _descriptor.Descriptor( @@ -13495,8 +13542,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47489, - serialized_end=51284, + serialized_start=47652, + serialized_end=51447, ) _GETGROUPACTIONSRESPONSE = _descriptor.Descriptor( @@ -13531,8 +13578,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47369, - serialized_end=51295, + serialized_start=47532, + serialized_end=51458, ) @@ -13591,8 +13638,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=51433, - serialized_end=51639, + serialized_start=51596, + serialized_end=51802, ) _GETGROUPACTIONSIGNERSREQUEST = _descriptor.Descriptor( @@ -13628,8 +13675,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=51298, - serialized_end=51690, + serialized_start=51461, + serialized_end=51853, ) @@ -13667,8 +13714,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=52122, - serialized_end=52175, + serialized_start=52285, + serialized_end=52338, ) _GETGROUPACTIONSIGNERSRESPONSE_GETGROUPACTIONSIGNERSRESPONSEV0_GROUPACTIONSIGNERS = _descriptor.Descriptor( @@ -13698,8 +13745,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=52178, - serialized_end=52323, + serialized_start=52341, + serialized_end=52486, ) _GETGROUPACTIONSIGNERSRESPONSE_GETGROUPACTIONSIGNERSRESPONSEV0 = _descriptor.Descriptor( @@ -13748,8 +13795,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=51831, - serialized_end=52333, + serialized_start=51994, + serialized_end=52496, ) _GETGROUPACTIONSIGNERSRESPONSE = _descriptor.Descriptor( @@ -13784,8 +13831,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=51693, - serialized_end=52344, + serialized_start=51856, + serialized_end=52507, ) _PLATFORMSUBSCRIPTIONREQUEST_PLATFORMSUBSCRIPTIONREQUESTV0.fields_by_name['filter'].message_type = _PLATFORMFILTERV0 @@ -13800,10 +13847,15 @@ _PLATFORMSUBSCRIPTIONRESPONSE.oneofs_by_name['version'].fields.append( _PLATFORMSUBSCRIPTIONRESPONSE.fields_by_name['v0']) _PLATFORMSUBSCRIPTIONRESPONSE.fields_by_name['v0'].containing_oneof = _PLATFORMSUBSCRIPTIONRESPONSE.oneofs_by_name['version'] -_STATETRANSITIONRESULTFILTER.oneofs_by_name['_tx_hash'].fields.append( - _STATETRANSITIONRESULTFILTER.fields_by_name['tx_hash']) -_STATETRANSITIONRESULTFILTER.fields_by_name['tx_hash'].containing_oneof = _STATETRANSITIONRESULTFILTER.oneofs_by_name['_tx_hash'] -_PLATFORMFILTERV0.fields_by_name['state_transition_result'].message_type = _STATETRANSITIONRESULTFILTER +_PLATFORMFILTERV0_ALLEVENTS.containing_type = _PLATFORMFILTERV0 +_PLATFORMFILTERV0_BLOCKCOMMITTED.containing_type = _PLATFORMFILTERV0 +_PLATFORMFILTERV0_STATETRANSITIONRESULTFILTER.containing_type = _PLATFORMFILTERV0 +_PLATFORMFILTERV0_STATETRANSITIONRESULTFILTER.oneofs_by_name['_tx_hash'].fields.append( + _PLATFORMFILTERV0_STATETRANSITIONRESULTFILTER.fields_by_name['tx_hash']) +_PLATFORMFILTERV0_STATETRANSITIONRESULTFILTER.fields_by_name['tx_hash'].containing_oneof = _PLATFORMFILTERV0_STATETRANSITIONRESULTFILTER.oneofs_by_name['_tx_hash'] +_PLATFORMFILTERV0.fields_by_name['all'].message_type = _PLATFORMFILTERV0_ALLEVENTS +_PLATFORMFILTERV0.fields_by_name['block_committed'].message_type = _PLATFORMFILTERV0_BLOCKCOMMITTED +_PLATFORMFILTERV0.fields_by_name['state_transition_result'].message_type = _PLATFORMFILTERV0_STATETRANSITIONRESULTFILTER _PLATFORMFILTERV0.oneofs_by_name['kind'].fields.append( _PLATFORMFILTERV0.fields_by_name['all']) _PLATFORMFILTERV0.fields_by_name['all'].containing_oneof = _PLATFORMFILTERV0.oneofs_by_name['kind'] @@ -15129,7 +15181,6 @@ _GETGROUPACTIONSIGNERSRESPONSE.fields_by_name['v0'].containing_oneof = _GETGROUPACTIONSIGNERSRESPONSE.oneofs_by_name['version'] DESCRIPTOR.message_types_by_name['PlatformSubscriptionRequest'] = _PLATFORMSUBSCRIPTIONREQUEST DESCRIPTOR.message_types_by_name['PlatformSubscriptionResponse'] = _PLATFORMSUBSCRIPTIONRESPONSE -DESCRIPTOR.message_types_by_name['StateTransitionResultFilter'] = _STATETRANSITIONRESULTFILTER DESCRIPTOR.message_types_by_name['PlatformFilterV0'] = _PLATFORMFILTERV0 DESCRIPTOR.message_types_by_name['PlatformEventV0'] = _PLATFORMEVENTV0 DESCRIPTOR.message_types_by_name['Proof'] = _PROOF @@ -15266,19 +15317,36 @@ _sym_db.RegisterMessage(PlatformSubscriptionResponse) _sym_db.RegisterMessage(PlatformSubscriptionResponse.PlatformSubscriptionResponseV0) -StateTransitionResultFilter = _reflection.GeneratedProtocolMessageType('StateTransitionResultFilter', (_message.Message,), { - 'DESCRIPTOR' : _STATETRANSITIONRESULTFILTER, - '__module__' : 'platform_pb2' - # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.StateTransitionResultFilter) - }) -_sym_db.RegisterMessage(StateTransitionResultFilter) - PlatformFilterV0 = _reflection.GeneratedProtocolMessageType('PlatformFilterV0', (_message.Message,), { + + 'AllEvents' : _reflection.GeneratedProtocolMessageType('AllEvents', (_message.Message,), { + 'DESCRIPTOR' : _PLATFORMFILTERV0_ALLEVENTS, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents) + }) + , + + 'BlockCommitted' : _reflection.GeneratedProtocolMessageType('BlockCommitted', (_message.Message,), { + 'DESCRIPTOR' : _PLATFORMFILTERV0_BLOCKCOMMITTED, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted) + }) + , + + 'StateTransitionResultFilter' : _reflection.GeneratedProtocolMessageType('StateTransitionResultFilter', (_message.Message,), { + 'DESCRIPTOR' : _PLATFORMFILTERV0_STATETRANSITIONRESULTFILTER, + '__module__' : 'platform_pb2' + # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter) + }) + , 'DESCRIPTOR' : _PLATFORMFILTERV0, '__module__' : 'platform_pb2' # @@protoc_insertion_point(class_scope:org.dash.platform.dapi.v0.PlatformFilterV0) }) _sym_db.RegisterMessage(PlatformFilterV0) +_sym_db.RegisterMessage(PlatformFilterV0.AllEvents) +_sym_db.RegisterMessage(PlatformFilterV0.BlockCommitted) +_sym_db.RegisterMessage(PlatformFilterV0.StateTransitionResultFilter) PlatformEventV0 = _reflection.GeneratedProtocolMessageType('PlatformEventV0', (_message.Message,), { @@ -17705,8 +17773,8 @@ index=0, serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_start=52439, - serialized_end=59467, + serialized_start=52602, + serialized_end=59630, methods=[ _descriptor.MethodDescriptor( name='broadcastStateTransition', diff --git a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts index dd7d9b5bd49..4f6ed90cd1c 100644 --- a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts +++ b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts @@ -114,45 +114,21 @@ export namespace PlatformSubscriptionResponse { } } -export class StateTransitionResultFilter extends jspb.Message { - hasTxHash(): boolean; - clearTxHash(): void; - getTxHash(): Uint8Array | string; - getTxHash_asU8(): Uint8Array; - getTxHash_asB64(): string; - setTxHash(value: Uint8Array | string): void; - - serializeBinary(): Uint8Array; - toObject(includeInstance?: boolean): StateTransitionResultFilter.AsObject; - static toObject(includeInstance: boolean, msg: StateTransitionResultFilter): StateTransitionResultFilter.AsObject; - static extensions: {[key: number]: jspb.ExtensionFieldInfo}; - static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; - static serializeBinaryToWriter(message: StateTransitionResultFilter, writer: jspb.BinaryWriter): void; - static deserializeBinary(bytes: Uint8Array): StateTransitionResultFilter; - static deserializeBinaryFromReader(message: StateTransitionResultFilter, reader: jspb.BinaryReader): StateTransitionResultFilter; -} - -export namespace StateTransitionResultFilter { - export type AsObject = { - txHash: Uint8Array | string, - } -} - export class PlatformFilterV0 extends jspb.Message { hasAll(): boolean; clearAll(): void; - getAll(): boolean; - setAll(value: boolean): void; + getAll(): PlatformFilterV0.AllEvents | undefined; + setAll(value?: PlatformFilterV0.AllEvents): void; hasBlockCommitted(): boolean; clearBlockCommitted(): void; - getBlockCommitted(): boolean; - setBlockCommitted(value: boolean): void; + getBlockCommitted(): PlatformFilterV0.BlockCommitted | undefined; + setBlockCommitted(value?: PlatformFilterV0.BlockCommitted): void; hasStateTransitionResult(): boolean; clearStateTransitionResult(): void; - getStateTransitionResult(): StateTransitionResultFilter | undefined; - setStateTransitionResult(value?: StateTransitionResultFilter): void; + getStateTransitionResult(): PlatformFilterV0.StateTransitionResultFilter | undefined; + setStateTransitionResult(value?: PlatformFilterV0.StateTransitionResultFilter): void; getKindCase(): PlatformFilterV0.KindCase; serializeBinary(): Uint8Array; @@ -167,9 +143,65 @@ export class PlatformFilterV0 extends jspb.Message { export namespace PlatformFilterV0 { export type AsObject = { - all: boolean, - blockCommitted: boolean, - stateTransitionResult?: StateTransitionResultFilter.AsObject, + all?: PlatformFilterV0.AllEvents.AsObject, + blockCommitted?: PlatformFilterV0.BlockCommitted.AsObject, + stateTransitionResult?: PlatformFilterV0.StateTransitionResultFilter.AsObject, + } + + export class AllEvents extends jspb.Message { + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): AllEvents.AsObject; + static toObject(includeInstance: boolean, msg: AllEvents): AllEvents.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: AllEvents, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): AllEvents; + static deserializeBinaryFromReader(message: AllEvents, reader: jspb.BinaryReader): AllEvents; + } + + export namespace AllEvents { + export type AsObject = { + } + } + + export class BlockCommitted extends jspb.Message { + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): BlockCommitted.AsObject; + static toObject(includeInstance: boolean, msg: BlockCommitted): BlockCommitted.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: BlockCommitted, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): BlockCommitted; + static deserializeBinaryFromReader(message: BlockCommitted, reader: jspb.BinaryReader): BlockCommitted; + } + + export namespace BlockCommitted { + export type AsObject = { + } + } + + export class StateTransitionResultFilter extends jspb.Message { + hasTxHash(): boolean; + clearTxHash(): void; + getTxHash(): Uint8Array | string; + getTxHash_asU8(): Uint8Array; + getTxHash_asB64(): string; + setTxHash(value: Uint8Array | string): void; + + serializeBinary(): Uint8Array; + toObject(includeInstance?: boolean): StateTransitionResultFilter.AsObject; + static toObject(includeInstance: boolean, msg: StateTransitionResultFilter): StateTransitionResultFilter.AsObject; + static extensions: {[key: number]: jspb.ExtensionFieldInfo}; + static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo}; + static serializeBinaryToWriter(message: StateTransitionResultFilter, writer: jspb.BinaryWriter): void; + static deserializeBinary(bytes: Uint8Array): StateTransitionResultFilter; + static deserializeBinaryFromReader(message: StateTransitionResultFilter, reader: jspb.BinaryReader): StateTransitionResultFilter; + } + + export namespace StateTransitionResultFilter { + export type AsObject = { + txHash: Uint8Array | string, + } } export enum KindCase { diff --git a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js index c90de5fcd4b..cc1993357ad 100644 --- a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js +++ b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js @@ -467,7 +467,10 @@ goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.EventCase', n goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.Keepalive', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalized', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase', null, { proto }); +goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.VersionCase', null, { proto }); @@ -481,7 +484,6 @@ goog.exportSymbol('proto.org.dash.platform.dapi.v0.SecurityLevelMap', null, { pr goog.exportSymbol('proto.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.SpecificKeys', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.StateTransitionBroadcastError', null, { proto }); -goog.exportSymbol('proto.org.dash.platform.dapi.v0.StateTransitionResultFilter', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.VersionCase', null, { proto }); goog.exportSymbol('proto.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0', null, { proto }); @@ -583,16 +585,37 @@ if (goog.DEBUG && !COMPILED) { * @extends {jspb.Message} * @constructor */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter = function(opt_data) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0 = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformFilterV0, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformFilterV0.displayName = 'proto.org.dash.platform.dapi.v0.PlatformFilterV0'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents = function(opt_data) { jspb.Message.initialize(this, opt_data, 0, -1, null, null); }; -goog.inherits(proto.org.dash.platform.dapi.v0.StateTransitionResultFilter, jspb.Message); +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents, jspb.Message); if (goog.DEBUG && !COMPILED) { /** * @public * @override */ - proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.displayName = 'proto.org.dash.platform.dapi.v0.StateTransitionResultFilter'; + proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.displayName = 'proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents'; } /** * Generated by JsPbCodeGenerator. @@ -604,16 +627,37 @@ if (goog.DEBUG && !COMPILED) { * @extends {jspb.Message} * @constructor */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0 = function(opt_data) { - jspb.Message.initialize(this, opt_data, 0, -1, null, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); }; -goog.inherits(proto.org.dash.platform.dapi.v0.PlatformFilterV0, jspb.Message); +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted, jspb.Message); if (goog.DEBUG && !COMPILED) { /** * @public * @override */ - proto.org.dash.platform.dapi.v0.PlatformFilterV0.displayName = 'proto.org.dash.platform.dapi.v0.PlatformFilterV0'; + proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.displayName = 'proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted'; +} +/** + * Generated by JsPbCodeGenerator. + * @param {Array=} opt_data Optional initial data array, typically from a + * server response, or constructed directly in Javascript. The array is used + * in place and becomes part of the constructed object. It is not cloned. + * If no data is provided, the constructed object will be empty, but still + * valid. + * @extends {jspb.Message} + * @constructor + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter = function(opt_data) { + jspb.Message.initialize(this, opt_data, 0, -1, null, null); +}; +goog.inherits(proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter, jspb.Message); +if (goog.DEBUG && !COMPILED) { + /** + * @public + * @override + */ + proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.displayName = 'proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter'; } /** * Generated by JsPbCodeGenerator. @@ -7777,6 +7821,33 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.prototype.hasV0 = f +/** + * Oneof group definitions for this message. Each group defines the field + * numbers belonging to that group. When of these fields' value is set, all + * other fields in the group are cleared. During deserialization, if multiple + * fields are encountered for a group, only the last value seen will be kept. + * @private {!Array>} + * @const + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_ = [[1,2,3]]; + +/** + * @enum {number} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase = { + KIND_NOT_SET: 0, + ALL: 1, + BLOCK_COMMITTED: 2, + STATE_TRANSITION_RESULT: 3 +}; + +/** + * @return {proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getKindCase = function() { + return /** @type {proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase} */(jspb.Message.computeOneofCase(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0])); +}; + if (jspb.Message.GENERATE_TO_OBJECT) { @@ -7792,8 +7863,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.toObject = function(opt_includeInstance) { - return proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject(opt_includeInstance, this); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(opt_includeInstance, this); }; @@ -7802,13 +7873,15 @@ proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.toObject = * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} msg The msg instance to transform. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject = function(includeInstance, msg) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject = function(includeInstance, msg) { var f, obj = { - txHash: msg.getTxHash_asB64() + all: (f = msg.getAll()) && proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.toObject(includeInstance, f), + blockCommitted: (f = msg.getBlockCommitted()) && proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.toObject(includeInstance, f), + stateTransitionResult: (f = msg.getStateTransitionResult()) && proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.toObject(includeInstance, f) }; if (includeInstance) { @@ -7822,23 +7895,23 @@ proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject = function( /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinary = function(bytes) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.org.dash.platform.dapi.v0.StateTransitionResultFilter; - return proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFromReader(msg, reader); + var msg = new proto.org.dash.platform.dapi.v0.PlatformFilterV0; + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} msg The message object to deserialize into. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFromReader = function(msg, reader) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -7846,8 +7919,19 @@ proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFro var field = reader.getFieldNumber(); switch (field) { case 1: - var value = /** @type {!Uint8Array} */ (reader.readBytes()); - msg.setTxHash(value); + var value = new proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.deserializeBinaryFromReader); + msg.setAll(value); + break; + case 2: + var value = new proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.deserializeBinaryFromReader); + msg.setBlockCommitted(value); + break; + case 3: + var value = new proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter; + reader.readMessage(value,proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.deserializeBinaryFromReader); + msg.setStateTransitionResult(value); break; default: reader.skipField(); @@ -7862,9 +7946,9 @@ proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFro * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.serializeBinary = function() { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.serializeBinaryToWriter(this, writer); + proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -7872,112 +7956,244 @@ proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.serializeB /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} message + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.serializeBinaryToWriter = function(message, writer) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = /** @type {!(string|Uint8Array)} */ (jspb.Message.getField(message, 1)); + f = message.getAll(); if (f != null) { - writer.writeBytes( + writer.writeMessage( 1, - f + f, + proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.serializeBinaryToWriter + ); + } + f = message.getBlockCommitted(); + if (f != null) { + writer.writeMessage( + 2, + f, + proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.serializeBinaryToWriter + ); + } + f = message.getStateTransitionResult(); + if (f != null) { + writer.writeMessage( + 3, + f, + proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.serializeBinaryToWriter ); } }; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { /** - * optional bytes tx_hash = 1; - * @return {string} + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.getTxHash = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.toObject(opt_includeInstance, this); }; /** - * optional bytes tx_hash = 1; - * This is a type-conversion wrapper around `getTxHash()` - * @return {string} + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.getTxHash_asB64 = function() { - return /** @type {string} */ (jspb.Message.bytesAsB64( - this.getTxHash())); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; }; +} /** - * optional bytes tx_hash = 1; - * Note that Uint8Array is not supported on all browsers. - * @see http://caniuse.com/Uint8Array - * This is a type-conversion wrapper around `getTxHash()` + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents; + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.deserializeBinaryFromReader(msg, reader); +}; + + +/** + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + + +/** + * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.getTxHash_asU8 = function() { - return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8( - this.getTxHash())); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); }; /** - * @param {!(string|Uint8Array)} value - * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} returns this + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.setTxHash = function(value) { - return jspb.Message.setField(this, 1, value); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents.serializeBinaryToWriter = function(message, writer) { + var f = undefined; }; + + + +if (jspb.Message.GENERATE_TO_OBJECT) { /** - * Clears the field making it undefined. - * @return {!proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} returns this + * Creates an object representation of this proto. + * Field names that are reserved in JavaScript and will be renamed to pb_name. + * Optional fields that are not set will be set to undefined. + * To access a reserved field use, foo.pb_, eg, foo.pb_default. + * For the list of reserved names please see: + * net/proto2/compiler/js/internal/generator.cc#kKeyword. + * @param {boolean=} opt_includeInstance Deprecated. whether to include the + * JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @return {!Object} */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.clearTxHash = function() { - return jspb.Message.setField(this, 1, undefined); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.toObject(opt_includeInstance, this); }; /** - * Returns whether this field is set. - * @return {boolean} + * Static version of the {@see toObject} method. + * @param {boolean|undefined} includeInstance Deprecated. Whether to include + * the JSPB instance for transitional soy proto support: + * http://goto/soy-param-migration + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} msg The msg instance to transform. + * @return {!Object} + * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.prototype.hasTxHash = function() { - return jspb.Message.getField(this, 1) != null; +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.toObject = function(includeInstance, msg) { + var f, obj = { + + }; + + if (includeInstance) { + obj.$jspbMessageInstance = msg; + } + return obj; }; +} +/** + * Deserializes binary data (in protobuf wire format). + * @param {jspb.ByteSource} bytes The bytes to deserialize. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.deserializeBinary = function(bytes) { + var reader = new jspb.BinaryReader(bytes); + var msg = new proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted; + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.deserializeBinaryFromReader(msg, reader); +}; + /** - * Oneof group definitions for this message. Each group defines the field - * numbers belonging to that group. When of these fields' value is set, all - * other fields in the group are cleared. During deserialization, if multiple - * fields are encountered for a group, only the last value seen will be kept. - * @private {!Array>} - * @const + * Deserializes binary data (in protobuf wire format) from the + * given reader into the given message object. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} msg The message object to deserialize into. + * @param {!jspb.BinaryReader} reader The BinaryReader to use. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_ = [[1,2,3]]; +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.deserializeBinaryFromReader = function(msg, reader) { + while (reader.nextField()) { + if (reader.isEndGroup()) { + break; + } + var field = reader.getFieldNumber(); + switch (field) { + default: + reader.skipField(); + break; + } + } + return msg; +}; + /** - * @enum {number} + * Serializes the message to binary data (in protobuf wire format). + * @return {!Uint8Array} */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase = { - KIND_NOT_SET: 0, - ALL: 1, - BLOCK_COMMITTED: 2, - STATE_TRANSITION_RESULT: 3 +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.prototype.serializeBinary = function() { + var writer = new jspb.BinaryWriter(); + proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.serializeBinaryToWriter(this, writer); + return writer.getResultBuffer(); }; + /** - * @return {proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase} + * Serializes the given message to binary data (in protobuf wire + * format), writing to the given BinaryWriter. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} message + * @param {!jspb.BinaryWriter} writer + * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getKindCase = function() { - return /** @type {proto.org.dash.platform.dapi.v0.PlatformFilterV0.KindCase} */(jspb.Message.computeOneofCase(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0])); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted.serializeBinaryToWriter = function(message, writer) { + var f = undefined; }; + + if (jspb.Message.GENERATE_TO_OBJECT) { /** * Creates an object representation of this proto. @@ -7991,8 +8207,8 @@ if (jspb.Message.GENERATE_TO_OBJECT) { * http://goto/soy-param-migration * @return {!Object} */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.toObject = function(opt_includeInstance) { - return proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject(opt_includeInstance, this); +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.toObject = function(opt_includeInstance) { + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.toObject(opt_includeInstance, this); }; @@ -8001,15 +8217,13 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.toObject = function(o * @param {boolean|undefined} includeInstance Deprecated. Whether to include * the JSPB instance for transitional soy proto support: * http://goto/soy-param-migration - * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} msg The msg instance to transform. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} msg The msg instance to transform. * @return {!Object} * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject = function(includeInstance, msg) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.toObject = function(includeInstance, msg) { var f, obj = { - all: jspb.Message.getBooleanFieldWithDefault(msg, 1, false), - blockCommitted: jspb.Message.getBooleanFieldWithDefault(msg, 2, false), - stateTransitionResult: (f = msg.getStateTransitionResult()) && proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.toObject(includeInstance, f) + txHash: msg.getTxHash_asB64() }; if (includeInstance) { @@ -8023,23 +8237,23 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.toObject = function(includeInst /** * Deserializes binary data (in protobuf wire format). * @param {jspb.ByteSource} bytes The bytes to deserialize. - * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinary = function(bytes) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.deserializeBinary = function(bytes) { var reader = new jspb.BinaryReader(bytes); - var msg = new proto.org.dash.platform.dapi.v0.PlatformFilterV0; - return proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader(msg, reader); + var msg = new proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter; + return proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.deserializeBinaryFromReader(msg, reader); }; /** * Deserializes binary data (in protobuf wire format) from the * given reader into the given message object. - * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} msg The message object to deserialize into. + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} msg The message object to deserialize into. * @param {!jspb.BinaryReader} reader The BinaryReader to use. - * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader = function(msg, reader) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.deserializeBinaryFromReader = function(msg, reader) { while (reader.nextField()) { if (reader.isEndGroup()) { break; @@ -8047,17 +8261,8 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader = f var field = reader.getFieldNumber(); switch (field) { case 1: - var value = /** @type {boolean} */ (reader.readBool()); - msg.setAll(value); - break; - case 2: - var value = /** @type {boolean} */ (reader.readBool()); - msg.setBlockCommitted(value); - break; - case 3: - var value = new proto.org.dash.platform.dapi.v0.StateTransitionResultFilter; - reader.readMessage(value,proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.deserializeBinaryFromReader); - msg.setStateTransitionResult(value); + var value = /** @type {!Uint8Array} */ (reader.readBytes()); + msg.setTxHash(value); break; default: reader.skipField(); @@ -8072,9 +8277,9 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.deserializeBinaryFromReader = f * Serializes the message to binary data (in protobuf wire format). * @return {!Uint8Array} */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.serializeBinary = function() { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.serializeBinary = function() { var writer = new jspb.BinaryWriter(); - proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter(this, writer); + proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.serializeBinaryToWriter(this, writer); return writer.getResultBuffer(); }; @@ -8082,61 +8287,107 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.serializeBinary = fun /** * Serializes the given message to binary data (in protobuf wire * format), writing to the given BinaryWriter. - * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} message + * @param {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} message * @param {!jspb.BinaryWriter} writer * @suppress {unusedLocalVariables} f is only used for nested messages */ -proto.org.dash.platform.dapi.v0.PlatformFilterV0.serializeBinaryToWriter = function(message, writer) { +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = /** @type {boolean} */ (jspb.Message.getField(message, 1)); + f = /** @type {!(string|Uint8Array)} */ (jspb.Message.getField(message, 1)); if (f != null) { - writer.writeBool( + writer.writeBytes( 1, f ); } - f = /** @type {boolean} */ (jspb.Message.getField(message, 2)); - if (f != null) { - writer.writeBool( - 2, - f - ); - } - f = message.getStateTransitionResult(); - if (f != null) { - writer.writeMessage( - 3, - f, - proto.org.dash.platform.dapi.v0.StateTransitionResultFilter.serializeBinaryToWriter - ); - } }; /** - * optional bool all = 1; + * optional bytes tx_hash = 1; + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.getTxHash = function() { + return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +}; + + +/** + * optional bytes tx_hash = 1; + * This is a type-conversion wrapper around `getTxHash()` + * @return {string} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.getTxHash_asB64 = function() { + return /** @type {string} */ (jspb.Message.bytesAsB64( + this.getTxHash())); +}; + + +/** + * optional bytes tx_hash = 1; + * Note that Uint8Array is not supported on all browsers. + * @see http://caniuse.com/Uint8Array + * This is a type-conversion wrapper around `getTxHash()` + * @return {!Uint8Array} + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.getTxHash_asU8 = function() { + return /** @type {!Uint8Array} */ (jspb.Message.bytesAsU8( + this.getTxHash())); +}; + + +/** + * @param {!(string|Uint8Array)} value + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.setTxHash = function(value) { + return jspb.Message.setField(this, 1, value); +}; + + +/** + * Clears the field making it undefined. + * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} returns this + */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.clearTxHash = function() { + return jspb.Message.setField(this, 1, undefined); +}; + + +/** + * Returns whether this field is set. * @return {boolean} */ +proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter.prototype.hasTxHash = function() { + return jspb.Message.getField(this, 1) != null; +}; + + +/** + * optional AllEvents all = 1; + * @return {?proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} + */ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getAll = function() { - return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 1, false)); + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents, 1)); }; /** - * @param {boolean} value + * @param {?proto.org.dash.platform.dapi.v0.PlatformFilterV0.AllEvents|undefined} value * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this - */ +*/ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.setAll = function(value) { - return jspb.Message.setOneofField(this, 1, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); + return jspb.Message.setOneofWrapperField(this, 1, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); }; /** - * Clears the field making it undefined. + * Clears the message field making it undefined. * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this */ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.clearAll = function() { - return jspb.Message.setOneofField(this, 1, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], undefined); + return this.setAll(undefined); }; @@ -8150,29 +8401,30 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.hasAll = function() { /** - * optional bool block_committed = 2; - * @return {boolean} + * optional BlockCommitted block_committed = 2; + * @return {?proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} */ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getBlockCommitted = function() { - return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false)); + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted, 2)); }; /** - * @param {boolean} value + * @param {?proto.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommitted|undefined} value * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this - */ +*/ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.setBlockCommitted = function(value) { - return jspb.Message.setOneofField(this, 2, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); + return jspb.Message.setOneofWrapperField(this, 2, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], value); }; /** - * Clears the field making it undefined. + * Clears the message field making it undefined. * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this */ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.clearBlockCommitted = function() { - return jspb.Message.setOneofField(this, 2, proto.org.dash.platform.dapi.v0.PlatformFilterV0.oneofGroups_[0], undefined); + return this.setBlockCommitted(undefined); }; @@ -8187,16 +8439,16 @@ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.hasBlockCommitted = f /** * optional StateTransitionResultFilter state_transition_result = 3; - * @return {?proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} + * @return {?proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} */ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.getStateTransitionResult = function() { - return /** @type{?proto.org.dash.platform.dapi.v0.StateTransitionResultFilter} */ ( - jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.StateTransitionResultFilter, 3)); + return /** @type{?proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter} */ ( + jspb.Message.getWrapperField(this, proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter, 3)); }; /** - * @param {?proto.org.dash.platform.dapi.v0.StateTransitionResultFilter|undefined} value + * @param {?proto.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilter|undefined} value * @return {!proto.org.dash.platform.dapi.v0.PlatformFilterV0} returns this */ proto.org.dash.platform.dapi.v0.PlatformFilterV0.prototype.setStateTransitionResult = function(value) { From 5ff52de034633a75e3e748dafb0ab510b27f7bd5 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 12:52:14 +0100 Subject: [PATCH 29/40] chore(drive-abci): lint and machete --- Cargo.lock | 2 -- packages/rs-drive-abci/Cargo.toml | 8 +++++--- .../validate_state_transition_identity_signed/v0/mod.rs | 1 - packages/rs-drive-abci/src/query/service.rs | 7 ++----- packages/wasm-drive-verify/tests/fuzz_tests.rs | 3 +-- 5 files changed, 8 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 10b0fb96ef9..857b3681051 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2009,10 +2009,8 @@ dependencies = [ "arc-swap", "assert_matches", "async-trait", - "base64 0.22.1", "bincode 2.0.0-rc.3", "bls-signatures", - "bs58", "chrono", "ciborium", "clap", diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 204f5135df4..4eb9fc96e01 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,8 +82,6 @@ rs-dash-event-bus = { path = "../rs-dash-event-bus" } sha2 = { version = "0.10" } [dev-dependencies] -bs58 = { version = "0.5.0" } -base64 = "0.22.1" platform-version = { path = "../rs-platform-version", features = [ "mock-versions", ] } @@ -111,7 +109,7 @@ rocksdb = { version = "0.23.0" } integer-encoding = { version = "4.0.0" } [features] -default = ["bls-signatures"] +default = ["bls-signatures","mocks","console","grovedbg"] mocks = ["mockall", "drive/fixtures-and-mocks", "bls-signatures"] console = ["console-subscriber", "tokio/tracing"] testing-config = [] @@ -126,3 +124,7 @@ unexpected_cfgs = { level = "warn", check-cfg = [ 'cfg(tokio_unstable)', 'cfg(create_sdk_test_data)', ] } + +[package.metadata.cargo-machete] + +ignored = ["rs-dash-event-bus"] diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/common/validate_state_transition_identity_signed/v0/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/common/validate_state_transition_identity_signed/v0/mod.rs index 5dc994c950b..31ee6fed406 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/common/validate_state_transition_identity_signed/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/common/validate_state_transition_identity_signed/v0/mod.rs @@ -131,7 +131,6 @@ impl ValidateStateTransitionIdentitySignatureV0<'_> for StateTransition { let partial_identity = match maybe_partial_identity { None => { - // dbg!(bs58::encode(&state_transition.get_owner_id()).into_string()); validation_result.add_error(SignatureError::IdentityNotFoundError( IdentityNotFoundError::new(owner_id), )); diff --git a/packages/rs-drive-abci/src/query/service.rs b/packages/rs-drive-abci/src/query/service.rs index 10587526991..2ba893a705a 100644 --- a/packages/rs-drive-abci/src/query/service.rs +++ b/packages/rs-drive-abci/src/query/service.rs @@ -900,7 +900,7 @@ impl PlatformService for QueryService { let keepalive_duration = if keepalive == 0 { None - } else if keepalive < 25 || keepalive > 300 { + } else if !(25..=300).contains(&keepalive) { tracing::warn!( interval = keepalive, "subscribe_platform_events: keepalive interval out of range" @@ -961,10 +961,7 @@ impl PlatformService for QueryService { Err(e) => Some(Err(e)), } } else { - match handle.recv().await { - Some(event) => Some(Ok(event)), - None => None, - } + handle.recv().await.map(Ok) }; match next_item { diff --git a/packages/wasm-drive-verify/tests/fuzz_tests.rs b/packages/wasm-drive-verify/tests/fuzz_tests.rs index 84a55917928..615c09fb4cb 100644 --- a/packages/wasm-drive-verify/tests/fuzz_tests.rs +++ b/packages/wasm-drive-verify/tests/fuzz_tests.rs @@ -7,7 +7,6 @@ use wasm_bindgen::JsValue; use wasm_bindgen_test::*; mod common; -use common::*; wasm_bindgen_test_configure!(run_in_browser); @@ -71,7 +70,7 @@ fn fuzz_document_query_with_nested_structures() { // Test with deeply nested query objects for depth in [1, 5, 10, 50] { - let mut query = Object::new(); + let query = Object::new(); // Create nested where clauses let where_array = Array::new(); From 7895cb652260912ff72fc87e7e573fa3f2854c45 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:04:26 +0100 Subject: [PATCH 30/40] fix failing migratons --- .../configs/defaults/getBaseConfigFactory.js | 1 - .../configs/getConfigFileMigrationsFactory.js | 12 ++++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/dashmate/configs/defaults/getBaseConfigFactory.js b/packages/dashmate/configs/defaults/getBaseConfigFactory.js index 97a55bb5a60..51125837a87 100644 --- a/packages/dashmate/configs/defaults/getBaseConfigFactory.js +++ b/packages/dashmate/configs/defaults/getBaseConfigFactory.js @@ -255,7 +255,6 @@ export default function getBaseConfigFactory() { accessLogPath: null, accessLogFormat: 'combined', }, - waitForStResultTimeout: 120000, }, }, drive: { diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index 98f62e78ac0..81d62ba44ff 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -1165,9 +1165,13 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) const defaultConfig = getDefaultConfigByNameOrGroup(name, options.group); if (!options.platform.dapi.deprecated) { - options.platform.dapi.deprecated = defaultConfig.get('platform.dapi.deprecated'); + if (defaultConfig.has('platform.dapi.deprecated')) { + options.platform.dapi.deprecated = defaultConfig.get('platform.dapi.deprecated'); + } } else if (typeof options.platform.dapi.deprecated.enabled === 'undefined') { - options.platform.dapi.deprecated.enabled = defaultConfig.get('platform.dapi.deprecated.enabled'); + if (defaultConfig.has('platform.dapi.deprecated.enabled')) { + options.platform.dapi.deprecated.enabled = defaultConfig.get('platform.dapi.deprecated.enabled'); + } } if (!options.platform.dapi.rsDapi) { @@ -1423,6 +1427,10 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) coreStreams, }; + if (typeof rsDapi.waitForStResultTimeout !== 'undefined') { + delete rsDapi.waitForStResultTimeout; + } + if (options.platform?.dapi?.api?.timeouts) { delete options.platform.dapi.api.timeouts; } From d6f52ea9d1df46d125954b8204aa9ce24f959bb9 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:06:31 +0100 Subject: [PATCH 31/40] chore: typo --- .../v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java | 6 +++--- .../clients/platform/v0/objective-c/Platform.pbrpc.h | 6 +++--- .../clients/platform/v0/objective-c/Platform.pbrpc.m | 6 +++--- .../clients/platform/v0/python/platform_pb2_grpc.py | 2 +- packages/dapi-grpc/protos/platform/v0/platform.proto | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java b/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java index 5971780661e..092241a1f3e 100644 --- a/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java +++ b/packages/dapi-grpc/clients/platform/v0/java/org/dash/platform/dapi/v0/PlatformGrpc.java @@ -1898,7 +1898,7 @@ public void getGroupActionSigners(org.dash.platform.dapi.v0.PlatformOuterClass.G /** *
      * Server-streaming subscription for platform events.
-     * Allows subscribint to various Platform events.
+     * Allows subscribing to various Platform events.
      * 
      * Once connected, it sends handshake response with empty event.
      * 
@@ -2658,7 +2658,7 @@ public void getGroupActionSigners(org.dash.platform.dapi.v0.PlatformOuterClass.G /** *
      * Server-streaming subscription for platform events.
-     * Allows subscribint to various Platform events.
+     * Allows subscribing to various Platform events.
      * 
      * Once connected, it sends handshake response with empty event.
      * 
@@ -3031,7 +3031,7 @@ public org.dash.platform.dapi.v0.PlatformOuterClass.GetGroupActionSignersRespons /** *
      * Server-streaming subscription for platform events.
-     * Allows subscribint to various Platform events.
+     * Allows subscribing to various Platform events.
      * 
      * Once connected, it sends handshake response with empty event.
      * 
diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h index ed8f9de7be5..88540cf17db 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.h @@ -347,7 +347,7 @@ NS_ASSUME_NONNULL_BEGIN /** * Server-streaming subscription for platform events. * - * Allows subscribint to various Platform events. + * Allows subscribing to various Platform events. * * Once connected, it sends handshake response with empty event. */ @@ -745,7 +745,7 @@ NS_ASSUME_NONNULL_BEGIN /** * Server-streaming subscription for platform events. * - * Allows subscribint to various Platform events. + * Allows subscribing to various Platform events. * * Once connected, it sends handshake response with empty event. * @@ -756,7 +756,7 @@ NS_ASSUME_NONNULL_BEGIN /** * Server-streaming subscription for platform events. * - * Allows subscribint to various Platform events. + * Allows subscribing to various Platform events. * * Once connected, it sends handshake response with empty event. * diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m index ac5ac60193a..5eea85a9407 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbrpc.m @@ -1080,7 +1080,7 @@ - (GRPCUnaryProtoCall *)getGroupActionSignersWithMessage:(GetGroupActionSignersR /** * Server-streaming subscription for platform events. * - * Allows subscribint to various Platform events. + * Allows subscribing to various Platform events. * * Once connected, it sends handshake response with empty event. * @@ -1093,7 +1093,7 @@ - (void)subscribePlatformEventsWithRequest:(PlatformSubscriptionRequest *)reques /** * Server-streaming subscription for platform events. * - * Allows subscribint to various Platform events. + * Allows subscribing to various Platform events. * * Once connected, it sends handshake response with empty event. * @@ -1108,7 +1108,7 @@ - (GRPCProtoCall *)RPCTosubscribePlatformEventsWithRequest:(PlatformSubscription /** * Server-streaming subscription for platform events. * - * Allows subscribint to various Platform events. + * Allows subscribing to various Platform events. * * Once connected, it sends handshake response with empty event. */ diff --git a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py index e9300e0f839..d1c8570058a 100644 --- a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py +++ b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2_grpc.py @@ -549,7 +549,7 @@ def getGroupActionSigners(self, request, context): def subscribePlatformEvents(self, request, context): """Server-streaming subscription for platform events. - Allows subscribint to various Platform events. + Allows subscribing to various Platform events. Once connected, it sends handshake response with empty event. """ diff --git a/packages/dapi-grpc/protos/platform/v0/platform.proto b/packages/dapi-grpc/protos/platform/v0/platform.proto index 3760f143928..1c8d8f15104 100644 --- a/packages/dapi-grpc/protos/platform/v0/platform.proto +++ b/packages/dapi-grpc/protos/platform/v0/platform.proto @@ -175,7 +175,7 @@ service Platform { // Server-streaming subscription for platform events. // - // Allows subscribint to various Platform events. + // Allows subscribing to various Platform events. // // Once connected, it sends handshake response with empty event. rpc subscribePlatformEvents(PlatformSubscriptionRequest) From 2c8d6beb62e22f8175ebe373a975bbbb0fda07b8 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:14:07 +0100 Subject: [PATCH 32/40] chore: subscription id as int --- .../protos/platform/v0/platform.proto | 3 ++- packages/rs-drive-abci/src/query/service.rs | 9 ++++----- packages/rs-sdk/examples/platform_events.rs | 2 +- packages/rs-sdk/src/platform/events.rs | 20 +------------------ 4 files changed, 8 insertions(+), 26 deletions(-) diff --git a/packages/dapi-grpc/protos/platform/v0/platform.proto b/packages/dapi-grpc/protos/platform/v0/platform.proto index 1c8d8f15104..7c53bc998ca 100644 --- a/packages/dapi-grpc/protos/platform/v0/platform.proto +++ b/packages/dapi-grpc/protos/platform/v0/platform.proto @@ -19,7 +19,8 @@ message PlatformSubscriptionRequest { message PlatformSubscriptionResponse { message PlatformSubscriptionResponseV0 { - string client_subscription_id = 1; + // Server-generated ID for this subscription; not guaranteed to be unique + uint64 subscription_id = 1; // Event details; can be nil/None, eg. during handshake PlatformEventV0 event = 2; } diff --git a/packages/rs-drive-abci/src/query/service.rs b/packages/rs-drive-abci/src/query/service.rs index 2ba893a705a..07a54f5f9c3 100644 --- a/packages/rs-drive-abci/src/query/service.rs +++ b/packages/rs-drive-abci/src/query/service.rs @@ -912,7 +912,7 @@ impl PlatformService for QueryService { Some(Duration::from_secs(keepalive as u64)) }; - let subscription_id = format!("{:X}", rand::random::()); + let subscription_id = rand::random::(); tracing::trace!( subscription_id = %subscription_id, "subscribe_platform_events: generated subscription id" @@ -929,10 +929,9 @@ impl PlatformService for QueryService { let handshake_tx = downstream_tx.clone(); { - let subscription_id = subscription_id.clone(); let handshake = PlatformSubscriptionResponse { version: Some(ResponseVersion::V0(PlatformSubscriptionResponseV0 { - client_subscription_id: subscription_id.clone(), + subscription_id, event: None, })), }; @@ -968,7 +967,7 @@ impl PlatformService for QueryService { Some(Ok(event)) => { let response = PlatformSubscriptionResponse { version: Some(ResponseVersion::V0(PlatformSubscriptionResponseV0 { - client_subscription_id: subscription_id.clone(), + subscription_id: subscription_id.clone(), event: Some(event), })), }; @@ -993,7 +992,7 @@ impl PlatformService for QueryService { let response = PlatformSubscriptionResponse { version: Some(ResponseVersion::V0(PlatformSubscriptionResponseV0 { - client_subscription_id: subscription_id.clone(), + subscription_id, event: Some(keepalive_event), })), }; diff --git a/packages/rs-sdk/examples/platform_events.rs b/packages/rs-sdk/examples/platform_events.rs index 67dc7d37ca4..6086f40cde9 100644 --- a/packages/rs-sdk/examples/platform_events.rs +++ b/packages/rs-sdk/examples/platform_events.rs @@ -148,7 +148,7 @@ mod subscribe { match message { Ok(response) => { if let Some(ResponseVersion::V0(v0)) = response.version { - let sub_id = v0.client_subscription_id; + let sub_id = v0.subscription_id; if let Some(event_v0) = v0.event { if let Some(event) = event_v0.event { match event { diff --git a/packages/rs-sdk/src/platform/events.rs b/packages/rs-sdk/src/platform/events.rs index e02d9553e04..32f1c56c58c 100644 --- a/packages/rs-sdk/src/platform/events.rs +++ b/packages/rs-sdk/src/platform/events.rs @@ -2,7 +2,6 @@ use dapi_grpc::platform::v0::platform_client::PlatformClient; use dapi_grpc::platform::v0::platform_subscription_request::{ PlatformSubscriptionRequestV0, Version as RequestVersion, }; -use dapi_grpc::platform::v0::platform_subscription_response::Version as ResponseVersion; use dapi_grpc::platform::v0::{ PlatformFilterV0, PlatformSubscriptionRequest, PlatformSubscriptionResponse, }; @@ -10,7 +9,7 @@ use dapi_grpc::tonic::{Request, Streaming}; use rs_dapi_client::transport::{create_channel, PlatformGrpcClient}; use rs_dapi_client::{RequestSettings, Uri}; use std::time::Duration; -pub type EventSubscriptionId = String; +pub type EventSubscriptionId = u64; impl crate::Sdk { /// Subscribe to Platform events using the gRPC streaming API. /// @@ -61,20 +60,3 @@ impl crate::Sdk { Ok(response) } } - -/// Trait for managing subscriptions. -pub trait Subscription { - /// Get the subscription id associated with this response. - /// - /// Returns an empty string if no subscription id is available. - fn subscription_id(&self) -> EventSubscriptionId; -} - -impl Subscription for PlatformSubscriptionResponse { - fn subscription_id(&self) -> EventSubscriptionId { - match &self.version { - Some(ResponseVersion::V0(v0)) => v0.client_subscription_id.clone(), - _ => "".to_string(), - } - } -} From fa042cc60b39e8905bc2653ca99dcb42c7e5ced0 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:47:54 +0100 Subject: [PATCH 33/40] refactor(rs-dapi): simplify timeout handling --- packages/rs-dapi/src/server/grpc.rs | 81 +++++++++++-------- .../subscribe_platform_events.rs | 20 +---- .../wait_for_state_transition_result.rs | 66 ++++++--------- .../streaming_service/block_header_stream.rs | 8 -- .../masternode_list_stream.rs | 4 - .../src/services/streaming_service/mod.rs | 25 +----- .../streaming_service/transaction_stream.rs | 2 - 7 files changed, 75 insertions(+), 131 deletions(-) diff --git a/packages/rs-dapi/src/server/grpc.rs b/packages/rs-dapi/src/server/grpc.rs index 0bc5b5503e4..a8f95291bdd 100644 --- a/packages/rs-dapi/src/server/grpc.rs +++ b/packages/rs-dapi/src/server/grpc.rs @@ -1,7 +1,7 @@ use std::pin::Pin; use std::task::{Context, Poll}; use std::time::Duration; -use tracing::{info, trace}; +use tracing::info; use crate::error::DAPIResult; use crate::logging::AccessLogLayer; @@ -18,8 +18,6 @@ use super::DapiServer; /// Timeouts for regular requests - sync with envoy config if changed there const UNARY_TIMEOUT_SECS: u64 = 15; -/// Timeouts for streaming requests - sync with envoy config if changed there -const STREAMING_TIMEOUT_SECS: u64 = 600; /// Safety margin to ensure we respond before client-side gRPC deadlines fire const GRPC_REQUEST_TIME_SAFETY_MARGIN: Duration = Duration::from_millis(50); @@ -40,16 +38,16 @@ impl DapiServer { const MAX_DECODING_BYTES: usize = 64 * 1024 * 1024; // 64 MiB const MAX_ENCODING_BYTES: usize = 32 * 1024 * 1024; // 32 MiB + // TCP keepalive a bit higher than app layer keepalive to avoid connection drops let builder = dapi_grpc::tonic::transport::Server::builder() - .tcp_keepalive(Some(Duration::from_secs(25))) - .timeout(Duration::from_secs( - STREAMING_TIMEOUT_SECS.max(UNARY_TIMEOUT_SECS) + 5, - )); // failsafe timeout - we handle timeouts in the timeout_layer + .tcp_keepalive(Some(Duration::from_secs(26))); - // Create timeout layer with different timeouts for unary vs streaming + // Apply method-specific deadlines; service handlers rely on this layer for cancellation. let timeout_layer = TimeoutLayer::new( Duration::from_secs(UNARY_TIMEOUT_SECS), - Duration::from_secs(STREAMING_TIMEOUT_SECS), + Duration::from_millis(self.config.dapi.state_transition_wait_timeout), + Duration::from_millis(self.config.dapi.platform_events_timeout), + Duration::from_millis(self.config.dapi.core_stream_timeout), ); let metrics_layer = MetricsLayer::new(); @@ -88,38 +86,50 @@ impl DapiServer { #[derive(Clone)] struct TimeoutLayer { unary_timeout: Duration, - streaming_timeout: Duration, + state_transition_timeout: Duration, + platform_events_timeout: Duration, + core_stream_timeout: Duration, } impl TimeoutLayer { - fn new(unary_timeout: Duration, streaming_timeout: Duration) -> Self { + fn new( + unary_timeout: Duration, + state_transition_timeout: Duration, + platform_events_timeout: Duration, + core_stream_timeout: Duration, + ) -> Self { Self { unary_timeout, - streaming_timeout, + state_transition_timeout, + platform_events_timeout, + core_stream_timeout, } } /// Determine the appropriate timeout for a given gRPC method path. fn timeout_for_method(&self, path: &str) -> Duration { - // All known streaming methods in Core service (all use "stream" return type) - const STREAMING_METHODS: &[&str] = &[ - "/org.dash.platform.dapi.v0.Core/subscribeToBlockHeadersWithChainLocks", - "/org.dash.platform.dapi.v0.Core/subscribeToTransactionsWithProofs", - "/org.dash.platform.dapi.v0.Core/subscribeToMasternodeList", - "/org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult", - "/org.dash.platform.dapi.v0.Platform/subscribePlatformEvents", - ]; - - // Check if this is a known streaming method - if STREAMING_METHODS.contains(&path) { - tracing::trace!( - path, - "Detected streaming gRPC method, applying streaming timeout" - ); - self.streaming_timeout - } else { - self.unary_timeout - } + let timeout = match path { + "/org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult" => { + self.state_transition_timeout + } + "/org.dash.platform.dapi.v0.Platform/subscribePlatformEvents" => { + self.platform_events_timeout + } + "/org.dash.platform.dapi.v0.Core/subscribeToBlockHeadersWithChainLocks" + | "/org.dash.platform.dapi.v0.Core/subscribeToTransactionsWithProofs" + | "/org.dash.platform.dapi.v0.Core/subscribeToMasternodeList" => { + self.core_stream_timeout + } + _ => self.unary_timeout, + }; + + tracing::trace!( + path, + timeout = timeout.as_secs_f32(), + "Applying timeout for gRPC method" + ); + + timeout } } @@ -168,7 +178,7 @@ where .min(default_timeout); if timeout_from_header.is_some() { - trace!( + tracing::trace!( path, header_timeout = timeout_from_header.unwrap_or_default().as_secs_f32(), timeout = effective_timeout.as_secs_f32(), @@ -251,7 +261,12 @@ mod tests { #[tokio::test] async fn timeout_service_returns_deadline_exceeded_status() { - let timeout_layer = TimeoutLayer::new(Duration::from_millis(5), Duration::from_secs(1)); + let timeout_layer = TimeoutLayer::new( + Duration::from_millis(5), + Duration::from_secs(1), + Duration::from_secs(2), + Duration::from_secs(3), + ); let mut service = timeout_layer.layer(SlowService); let request = Request::builder().uri("/test").body(()).unwrap(); diff --git a/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs b/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs index e07319bb9cd..d8fc10889c3 100644 --- a/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs +++ b/packages/rs-dapi/src/services/platform_service/subscribe_platform_events.rs @@ -4,7 +4,6 @@ use dapi_grpc::tonic::{Request, Response, Status}; use futures::StreamExt; use std::sync::Arc; use tokio::sync::mpsc; -use tokio::time::{Duration, sleep}; use tokio_stream::wrappers::ReceiverStream; use super::PlatformServiceImpl; @@ -33,14 +32,11 @@ impl PlatformServiceImpl { /// Forwards a subscription request upstream to Drive and streams responses back to the caller. pub async fn subscribe_platform_events_impl( &self, - mut request: Request, + request: Request, ) -> Result>>, Status> { let active_session = ActiveSessionGuard::new(); - let timeout_duration = Duration::from_millis(self.config.dapi.platform_events_timeout); - request.set_timeout(timeout_duration); - let mut client = self.drive_client.get_client(); let uplink_resp = client.subscribe_platform_events(request).await?; metrics::platform_events_upstream_stream_started(); @@ -51,20 +47,6 @@ impl PlatformServiceImpl { Result, >(PLATFORM_EVENTS_STREAM_BUFFER); - { - let timeout_tx = downlink_resp_tx.clone(); - self.workers.spawn(async move { - sleep(timeout_duration).await; - let status = - Status::deadline_exceeded("platform events subscription deadline exceeded"); - metrics::platform_events_forwarded_error(); - if timeout_tx.send(Err(status.clone())).await.is_ok() { - tracing::debug!("Platform events stream timeout elapsed"); - } - Ok::<(), DapiError>(()) - }); - } - // Spawn a task to forward uplink responses -> downlink { let session_handle = active_session; diff --git a/packages/rs-dapi/src/services/platform_service/wait_for_state_transition_result.rs b/packages/rs-dapi/src/services/platform_service/wait_for_state_transition_result.rs index 48a814a4874..347e5befbac 100644 --- a/packages/rs-dapi/src/services/platform_service/wait_for_state_transition_result.rs +++ b/packages/rs-dapi/src/services/platform_service/wait_for_state_transition_result.rs @@ -10,8 +10,6 @@ use dapi_grpc::platform::v0::{ wait_for_state_transition_result_response, }; use dapi_grpc::tonic::{Request, Response}; -use std::time::Duration; -use tokio::time::timeout; use tracing::{Instrument, debug, trace}; impl PlatformServiceImpl { @@ -76,50 +74,32 @@ impl PlatformServiceImpl { } }; - // Wait for transaction event with timeout - let timeout_duration = - Duration::from_millis(self.config.dapi.state_transition_wait_timeout); + trace!("Waiting for transaction event"); - trace!( - "Waiting for transaction event with timeout: {:?}", - timeout_duration - ); - - // Filter events to find our specific transaction - timeout(timeout_duration, async { - loop { - let result = sub_handle.recv().await; - match result { - Some(crate::services::streaming_service::StreamingEvent::PlatformTx { event }) => { - debug!(tx = hash_hex, "Received matching transaction event"); - return self.build_response_from_event(event, v0.prove).await; - } - Some(message) => { - // Ignore other message types - trace!( - ?message, - "Received non-matching message, ignoring; this should not happen due to filtering" - ); - continue; - } - None => { - debug!("Platform tx subscription channel closed unexpectedly"); - return Err(DapiError::Unavailable( - "Platform tx subscription channel closed unexpectedly".to_string(), - )); - } + loop { + // gRPC TimeoutLayer enforces overall deadline; this loop exits when the request is cancelled. + let result = sub_handle.recv().await; + match result { + Some(crate::services::streaming_service::StreamingEvent::PlatformTx { event }) => { + debug!(tx = hash_hex, "Received matching transaction event"); + return self.build_response_from_event(event, v0.prove).await; + } + Some(message) => { + // Ignore other message types + trace!( + ?message, + "Received non-matching message, ignoring; this should not happen due to filtering" + ); + continue; + } + None => { + debug!("Platform tx subscription channel closed unexpectedly"); + return Err(DapiError::Unavailable( + "Platform tx subscription channel closed unexpectedly".to_string(), + )); } } - }) - .await - .map_err(|msg| DapiError::Timeout(msg.to_string())) - .inspect_err(|e| { - tracing::debug!( - error = %e, - tx = %hash_hex, - "wait_for_state_transition_result: timed out" - ); - })? + } } .instrument(span) .await diff --git a/packages/rs-dapi/src/services/streaming_service/block_header_stream.rs b/packages/rs-dapi/src/services/streaming_service/block_header_stream.rs index 03ba4553945..55290d87670 100644 --- a/packages/rs-dapi/src/services/streaming_service/block_header_stream.rs +++ b/packages/rs-dapi/src/services/streaming_service/block_header_stream.rs @@ -1,7 +1,5 @@ use std::collections::HashSet; use std::sync::Arc; -use std::time::Duration; - use dapi_grpc::core::v0::block_headers_with_chain_locks_request::FromBlock; use dapi_grpc::core::v0::{ BlockHeaders, BlockHeadersWithChainLocksRequest, BlockHeadersWithChainLocksResponse, @@ -81,9 +79,6 @@ impl StreamingServiceImpl { ) -> Result { let (tx, rx) = mpsc::channel(BLOCK_HEADER_STREAM_BUFFER); - let timeout = Duration::from_millis(self.config.dapi.core_stream_timeout); - self.schedule_stream_timeout(tx.clone(), timeout, "block header stream deadline exceeded"); - self.send_initial_chainlock(tx.clone()).await?; self.spawn_fetch_historical_headers(from_block, Some(count as usize), None, tx, None, None) @@ -102,9 +97,6 @@ impl StreamingServiceImpl { let delivered_hashes: DeliveredHashSet = Arc::new(AsyncMutex::new(HashSet::new())); let (delivery_gate_tx, delivery_gate_rx) = watch::channel(false); - let timeout = Duration::from_millis(self.config.dapi.core_stream_timeout); - self.schedule_stream_timeout(tx.clone(), timeout, "block header stream deadline exceeded"); - let subscriber_id = self .start_live_stream( tx.clone(), diff --git a/packages/rs-dapi/src/services/streaming_service/masternode_list_stream.rs b/packages/rs-dapi/src/services/streaming_service/masternode_list_stream.rs index cec46aaaa45..4ed5d39bf25 100644 --- a/packages/rs-dapi/src/services/streaming_service/masternode_list_stream.rs +++ b/packages/rs-dapi/src/services/streaming_service/masternode_list_stream.rs @@ -3,7 +3,6 @@ use dapi_grpc::tonic::{Request, Response, Status}; use tokio::sync::mpsc; use tokio_stream::wrappers::ReceiverStream; use tracing::debug; -use std::time::Duration; use crate::DapiError; use crate::services::streaming_service::{FilterType, StreamingEvent, StreamingServiceImpl}; @@ -21,9 +20,6 @@ impl StreamingServiceImpl { // Create channel for streaming responses let (tx, rx) = mpsc::channel(MASTERNODE_STREAM_BUFFER); - let timeout = Duration::from_millis(self.config.dapi.core_stream_timeout); - self.schedule_stream_timeout(tx.clone(), timeout, "masternode list stream deadline exceeded"); - // Add subscription to manager let subscription_handle = self.subscriber_manager.add_subscription(filter).await; diff --git a/packages/rs-dapi/src/services/streaming_service/mod.rs b/packages/rs-dapi/src/services/streaming_service/mod.rs index 40e099cf9e2..e004bbf8c0b 100644 --- a/packages/rs-dapi/src/services/streaming_service/mod.rs +++ b/packages/rs-dapi/src/services/streaming_service/mod.rs @@ -1,5 +1,6 @@ // Streaming service modular implementation -// This module handles real-time streaming of blockchain data from ZMQ to gRPC clients +// This module handles real-time streaming of blockchain data from ZMQ to gRPC clients. +// Stream lifetimes are governed by the gRPC TimeoutLayer in server/grpc.rs. mod block_header_stream; mod bloom; @@ -13,11 +14,10 @@ use crate::DapiError; use crate::clients::{CoreClient, TenderdashClient}; use crate::config::Config; use crate::sync::Workers; -use dapi_grpc::tonic::Status; use dash_spv::Hash; use std::sync::Arc; use tokio::sync::broadcast::error::RecvError; -use tokio::sync::{broadcast, mpsc}; +use tokio::sync::broadcast; use tokio::time::{Duration, sleep}; use tracing::{debug, trace}; @@ -132,25 +132,6 @@ impl StreamingServiceImpl { }) } - /// Schedule a timeout for a streaming response so clients receive a graceful deadline exceeded error. - fn schedule_stream_timeout( - &self, - tx: mpsc::Sender>, - duration: Duration, - context: &'static str, - ) where - T: Send + 'static, - { - self.workers.spawn(async move { - sleep(duration).await; - let status = Status::deadline_exceeded(context); - if tx.send(Err(status.clone())).await.is_ok() { - debug!(context = context, "stream timeout elapsed; closing channel"); - } - Ok::<(), DapiError>(()) - }); - } - /// Background worker: subscribe to Tenderdash transactions and forward to subscribers async fn tenderdash_transactions_subscription_worker( tenderdash_client: Arc, diff --git a/packages/rs-dapi/src/services/streaming_service/transaction_stream.rs b/packages/rs-dapi/src/services/streaming_service/transaction_stream.rs index c6c768ee6f7..06ce6e24a83 100644 --- a/packages/rs-dapi/src/services/streaming_service/transaction_stream.rs +++ b/packages/rs-dapi/src/services/streaming_service/transaction_stream.rs @@ -170,8 +170,6 @@ impl StreamingServiceImpl { .ok_or_else(|| Status::invalid_argument("Must specify from_block"))?; let (tx, rx) = mpsc::channel(TRANSACTION_STREAM_BUFFER); - let timeout = Duration::from_millis(self.config.dapi.core_stream_timeout); - self.schedule_stream_timeout(tx.clone(), timeout, "transactions with proofs stream deadline exceeded"); if count > 0 { // Historical mode self.spawn_fetch_transactions_history( From 1742c74105c656b1de64fc4fb1bb29351f0fa324 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:52:25 +0100 Subject: [PATCH 34/40] chore: docs typo --- .../clients/drive/v0/nodejs/drive_pbjs.js | 44 +- .../platform/v0/nodejs/platform_pbjs.js | 44 +- .../platform/v0/nodejs/platform_protoc.js | 26 +- .../platform/v0/objective-c/Platform.pbobjc.h | 7 +- .../platform/v0/objective-c/Platform.pbobjc.m | 12 +- .../platform/v0/python/platform_pb2.py | 1300 ++++++++--------- .../clients/platform/v0/web/platform_pb.d.ts | 6 +- .../clients/platform/v0/web/platform_pb.js | 26 +- .../protos/platform/v0/platform.proto | 2 +- .../configs/getConfigFileMigrationsFactory.js | 8 - 10 files changed, 748 insertions(+), 727 deletions(-) diff --git a/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js b/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js index e46c0fa6a1e..1d75d8f7380 100644 --- a/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js +++ b/packages/dapi-grpc/clients/drive/v0/nodejs/drive_pbjs.js @@ -1202,7 +1202,7 @@ $root.org = (function() { * Properties of a PlatformSubscriptionResponseV0. * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse * @interface IPlatformSubscriptionResponseV0 - * @property {string|null} [clientSubscriptionId] PlatformSubscriptionResponseV0 clientSubscriptionId + * @property {number|Long|null} [subscriptionId] PlatformSubscriptionResponseV0 subscriptionId * @property {org.dash.platform.dapi.v0.IPlatformEventV0|null} [event] PlatformSubscriptionResponseV0 event */ @@ -1222,12 +1222,12 @@ $root.org = (function() { } /** - * PlatformSubscriptionResponseV0 clientSubscriptionId. - * @member {string} clientSubscriptionId + * PlatformSubscriptionResponseV0 subscriptionId. + * @member {number|Long} subscriptionId * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 * @instance */ - PlatformSubscriptionResponseV0.prototype.clientSubscriptionId = ""; + PlatformSubscriptionResponseV0.prototype.subscriptionId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; /** * PlatformSubscriptionResponseV0 event. @@ -1261,8 +1261,8 @@ $root.org = (function() { PlatformSubscriptionResponseV0.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.clientSubscriptionId != null && Object.hasOwnProperty.call(message, "clientSubscriptionId")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientSubscriptionId); + if (message.subscriptionId != null && Object.hasOwnProperty.call(message, "subscriptionId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.subscriptionId); if (message.event != null && Object.hasOwnProperty.call(message, "event")) $root.org.dash.platform.dapi.v0.PlatformEventV0.encode(message.event, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; @@ -1300,7 +1300,7 @@ $root.org = (function() { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.clientSubscriptionId = reader.string(); + message.subscriptionId = reader.uint64(); break; case 2: message.event = $root.org.dash.platform.dapi.v0.PlatformEventV0.decode(reader, reader.uint32()); @@ -1340,9 +1340,9 @@ $root.org = (function() { PlatformSubscriptionResponseV0.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.clientSubscriptionId != null && message.hasOwnProperty("clientSubscriptionId")) - if (!$util.isString(message.clientSubscriptionId)) - return "clientSubscriptionId: string expected"; + if (message.subscriptionId != null && message.hasOwnProperty("subscriptionId")) + if (!$util.isInteger(message.subscriptionId) && !(message.subscriptionId && $util.isInteger(message.subscriptionId.low) && $util.isInteger(message.subscriptionId.high))) + return "subscriptionId: integer|Long expected"; if (message.event != null && message.hasOwnProperty("event")) { var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.verify(message.event); if (error) @@ -1363,8 +1363,15 @@ $root.org = (function() { if (object instanceof $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0) return object; var message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0(); - if (object.clientSubscriptionId != null) - message.clientSubscriptionId = String(object.clientSubscriptionId); + if (object.subscriptionId != null) + if ($util.Long) + (message.subscriptionId = $util.Long.fromValue(object.subscriptionId)).unsigned = true; + else if (typeof object.subscriptionId === "string") + message.subscriptionId = parseInt(object.subscriptionId, 10); + else if (typeof object.subscriptionId === "number") + message.subscriptionId = object.subscriptionId; + else if (typeof object.subscriptionId === "object") + message.subscriptionId = new $util.LongBits(object.subscriptionId.low >>> 0, object.subscriptionId.high >>> 0).toNumber(true); if (object.event != null) { if (typeof object.event !== "object") throw TypeError(".org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.event: object expected"); @@ -1387,11 +1394,18 @@ $root.org = (function() { options = {}; var object = {}; if (options.defaults) { - object.clientSubscriptionId = ""; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.subscriptionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.subscriptionId = options.longs === String ? "0" : 0; object.event = null; } - if (message.clientSubscriptionId != null && message.hasOwnProperty("clientSubscriptionId")) - object.clientSubscriptionId = message.clientSubscriptionId; + if (message.subscriptionId != null && message.hasOwnProperty("subscriptionId")) + if (typeof message.subscriptionId === "number") + object.subscriptionId = options.longs === String ? String(message.subscriptionId) : message.subscriptionId; + else + object.subscriptionId = options.longs === String ? $util.Long.prototype.toString.call(message.subscriptionId) : options.longs === Number ? new $util.LongBits(message.subscriptionId.low >>> 0, message.subscriptionId.high >>> 0).toNumber(true) : message.subscriptionId; if (message.event != null && message.hasOwnProperty("event")) object.event = $root.org.dash.platform.dapi.v0.PlatformEventV0.toObject(message.event, options); return object; diff --git a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js index 79a71dc3436..001f8ee5f45 100644 --- a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js +++ b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_pbjs.js @@ -694,7 +694,7 @@ $root.org = (function() { * Properties of a PlatformSubscriptionResponseV0. * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse * @interface IPlatformSubscriptionResponseV0 - * @property {string|null} [clientSubscriptionId] PlatformSubscriptionResponseV0 clientSubscriptionId + * @property {number|Long|null} [subscriptionId] PlatformSubscriptionResponseV0 subscriptionId * @property {org.dash.platform.dapi.v0.IPlatformEventV0|null} [event] PlatformSubscriptionResponseV0 event */ @@ -714,12 +714,12 @@ $root.org = (function() { } /** - * PlatformSubscriptionResponseV0 clientSubscriptionId. - * @member {string} clientSubscriptionId + * PlatformSubscriptionResponseV0 subscriptionId. + * @member {number|Long} subscriptionId * @memberof org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0 * @instance */ - PlatformSubscriptionResponseV0.prototype.clientSubscriptionId = ""; + PlatformSubscriptionResponseV0.prototype.subscriptionId = $util.Long ? $util.Long.fromBits(0,0,true) : 0; /** * PlatformSubscriptionResponseV0 event. @@ -753,8 +753,8 @@ $root.org = (function() { PlatformSubscriptionResponseV0.encode = function encode(message, writer) { if (!writer) writer = $Writer.create(); - if (message.clientSubscriptionId != null && Object.hasOwnProperty.call(message, "clientSubscriptionId")) - writer.uint32(/* id 1, wireType 2 =*/10).string(message.clientSubscriptionId); + if (message.subscriptionId != null && Object.hasOwnProperty.call(message, "subscriptionId")) + writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.subscriptionId); if (message.event != null && Object.hasOwnProperty.call(message, "event")) $root.org.dash.platform.dapi.v0.PlatformEventV0.encode(message.event, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim(); return writer; @@ -792,7 +792,7 @@ $root.org = (function() { var tag = reader.uint32(); switch (tag >>> 3) { case 1: - message.clientSubscriptionId = reader.string(); + message.subscriptionId = reader.uint64(); break; case 2: message.event = $root.org.dash.platform.dapi.v0.PlatformEventV0.decode(reader, reader.uint32()); @@ -832,9 +832,9 @@ $root.org = (function() { PlatformSubscriptionResponseV0.verify = function verify(message) { if (typeof message !== "object" || message === null) return "object expected"; - if (message.clientSubscriptionId != null && message.hasOwnProperty("clientSubscriptionId")) - if (!$util.isString(message.clientSubscriptionId)) - return "clientSubscriptionId: string expected"; + if (message.subscriptionId != null && message.hasOwnProperty("subscriptionId")) + if (!$util.isInteger(message.subscriptionId) && !(message.subscriptionId && $util.isInteger(message.subscriptionId.low) && $util.isInteger(message.subscriptionId.high))) + return "subscriptionId: integer|Long expected"; if (message.event != null && message.hasOwnProperty("event")) { var error = $root.org.dash.platform.dapi.v0.PlatformEventV0.verify(message.event); if (error) @@ -855,8 +855,15 @@ $root.org = (function() { if (object instanceof $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0) return object; var message = new $root.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0(); - if (object.clientSubscriptionId != null) - message.clientSubscriptionId = String(object.clientSubscriptionId); + if (object.subscriptionId != null) + if ($util.Long) + (message.subscriptionId = $util.Long.fromValue(object.subscriptionId)).unsigned = true; + else if (typeof object.subscriptionId === "string") + message.subscriptionId = parseInt(object.subscriptionId, 10); + else if (typeof object.subscriptionId === "number") + message.subscriptionId = object.subscriptionId; + else if (typeof object.subscriptionId === "object") + message.subscriptionId = new $util.LongBits(object.subscriptionId.low >>> 0, object.subscriptionId.high >>> 0).toNumber(true); if (object.event != null) { if (typeof object.event !== "object") throw TypeError(".org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.event: object expected"); @@ -879,11 +886,18 @@ $root.org = (function() { options = {}; var object = {}; if (options.defaults) { - object.clientSubscriptionId = ""; + if ($util.Long) { + var long = new $util.Long(0, 0, true); + object.subscriptionId = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long; + } else + object.subscriptionId = options.longs === String ? "0" : 0; object.event = null; } - if (message.clientSubscriptionId != null && message.hasOwnProperty("clientSubscriptionId")) - object.clientSubscriptionId = message.clientSubscriptionId; + if (message.subscriptionId != null && message.hasOwnProperty("subscriptionId")) + if (typeof message.subscriptionId === "number") + object.subscriptionId = options.longs === String ? String(message.subscriptionId) : message.subscriptionId; + else + object.subscriptionId = options.longs === String ? $util.Long.prototype.toString.call(message.subscriptionId) : options.longs === Number ? new $util.LongBits(message.subscriptionId.low >>> 0, message.subscriptionId.high >>> 0).toNumber(true) : message.subscriptionId; if (message.event != null && message.hasOwnProperty("event")) object.event = $root.org.dash.platform.dapi.v0.PlatformEventV0.toObject(message.event, options); return object; diff --git a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js index cc1993357ad..7db02826598 100644 --- a/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js +++ b/packages/dapi-grpc/clients/platform/v0/nodejs/platform_protoc.js @@ -7634,7 +7634,7 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptio */ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.toObject = function(includeInstance, msg) { var f, obj = { - clientSubscriptionId: jspb.Message.getFieldWithDefault(msg, 1, ""), + subscriptionId: jspb.Message.getFieldWithDefault(msg, 1, 0), event: (f = msg.getEvent()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.toObject(includeInstance, f) }; @@ -7673,8 +7673,8 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptio var field = reader.getFieldNumber(); switch (field) { case 1: - var value = /** @type {string} */ (reader.readString()); - msg.setClientSubscriptionId(value); + var value = /** @type {number} */ (reader.readUint64()); + msg.setSubscriptionId(value); break; case 2: var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0; @@ -7710,9 +7710,9 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptio */ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = message.getClientSubscriptionId(); - if (f.length > 0) { - writer.writeString( + f = message.getSubscriptionId(); + if (f !== 0) { + writer.writeUint64( 1, f ); @@ -7729,20 +7729,20 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptio /** - * optional string client_subscription_id = 1; - * @return {string} + * optional uint64 subscription_id = 1; + * @return {number} */ -proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.getClientSubscriptionId = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.getSubscriptionId = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); }; /** - * @param {string} value + * @param {number} value * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} returns this */ -proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.setClientSubscriptionId = function(value) { - return jspb.Message.setProto3StringField(this, 1, value); +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.setSubscriptionId = function(value) { + return jspb.Message.setProto3IntField(this, 1, value); }; diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h index 6ff860e35d3..4c0cc00ef49 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.h @@ -527,13 +527,14 @@ void PlatformSubscriptionResponse_ClearVersionOneOfCase(PlatformSubscriptionResp #pragma mark - PlatformSubscriptionResponse_PlatformSubscriptionResponseV0 typedef GPB_ENUM(PlatformSubscriptionResponse_PlatformSubscriptionResponseV0_FieldNumber) { - PlatformSubscriptionResponse_PlatformSubscriptionResponseV0_FieldNumber_ClientSubscriptionId = 1, + PlatformSubscriptionResponse_PlatformSubscriptionResponseV0_FieldNumber_SubscriptionId = 1, PlatformSubscriptionResponse_PlatformSubscriptionResponseV0_FieldNumber_Event = 2, }; GPB_FINAL @interface PlatformSubscriptionResponse_PlatformSubscriptionResponseV0 : GPBMessage -@property(nonatomic, readwrite, copy, null_resettable) NSString *clientSubscriptionId; +/** Server-generated ID for this subscription; not guaranteed to be unique */ +@property(nonatomic, readwrite) uint64_t subscriptionId; /** Event details; can be nil/None, eg. during handshake */ @property(nonatomic, readwrite, strong, null_resettable) PlatformEventV0 *event; @@ -592,7 +593,7 @@ GPB_FINAL @interface PlatformFilterV0_AllEvents : GPBMessage #pragma mark - PlatformFilterV0_BlockCommitted /** - * Notify about every Platform (Tenderdash) block that get committed (mined) + * Notify about every Platform (Tenderdash) block that gets committed (mined) **/ GPB_FINAL @interface PlatformFilterV0_BlockCommitted : GPBMessage diff --git a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m index f5123b32ea4..e787e4b4637 100644 --- a/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m +++ b/packages/dapi-grpc/clients/platform/v0/objective-c/Platform.pbobjc.m @@ -581,13 +581,13 @@ void PlatformSubscriptionResponse_ClearVersionOneOfCase(PlatformSubscriptionResp @implementation PlatformSubscriptionResponse_PlatformSubscriptionResponseV0 -@dynamic clientSubscriptionId; +@dynamic subscriptionId; @dynamic hasEvent, event; typedef struct PlatformSubscriptionResponse_PlatformSubscriptionResponseV0__storage_ { uint32_t _has_storage_[1]; - NSString *clientSubscriptionId; PlatformEventV0 *event; + uint64_t subscriptionId; } PlatformSubscriptionResponse_PlatformSubscriptionResponseV0__storage_; // This method is threadsafe because it is initially called @@ -597,13 +597,13 @@ + (GPBDescriptor *)descriptor { if (!descriptor) { static GPBMessageFieldDescription fields[] = { { - .name = "clientSubscriptionId", + .name = "subscriptionId", .dataTypeSpecific.clazz = Nil, - .number = PlatformSubscriptionResponse_PlatformSubscriptionResponseV0_FieldNumber_ClientSubscriptionId, + .number = PlatformSubscriptionResponse_PlatformSubscriptionResponseV0_FieldNumber_SubscriptionId, .hasIndex = 0, - .offset = (uint32_t)offsetof(PlatformSubscriptionResponse_PlatformSubscriptionResponseV0__storage_, clientSubscriptionId), + .offset = (uint32_t)offsetof(PlatformSubscriptionResponse_PlatformSubscriptionResponseV0__storage_, subscriptionId), .flags = (GPBFieldFlags)(GPBFieldOptional | GPBFieldClearHasIvarOnZero), - .dataType = GPBDataTypeString, + .dataType = GPBDataTypeUInt64, }, { .name = "event", diff --git a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py index d51ffa533bb..9ead145b6ca 100644 --- a/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py +++ b/packages/dapi-grpc/clients/platform/v0/python/platform_pb2.py @@ -23,7 +23,7 @@ syntax='proto3', serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_pb=b'\n\x0eplatform.proto\x12\x19org.dash.platform.dapi.v0\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xfd\x01\n\x1bPlatformSubscriptionRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0H\x00\x1ao\n\x1dPlatformSubscriptionRequestV0\x12;\n\x06\x66ilter\x18\x01 \x01(\x0b\x32+.org.dash.platform.dapi.v0.PlatformFilterV0\x12\x11\n\tkeepalive\x18\x02 \x01(\rB\t\n\x07version\"\x8c\x02\n\x1cPlatformSubscriptionResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0H\x00\x1a{\n\x1ePlatformSubscriptionResponseV0\x12\x1e\n\x16\x63lient_subscription_id\x18\x01 \x01(\t\x12\x39\n\x05\x65vent\x18\x02 \x01(\x0b\x32*.org.dash.platform.dapi.v0.PlatformEventV0B\t\n\x07version\"\x83\x03\n\x10PlatformFilterV0\x12\x44\n\x03\x61ll\x18\x01 \x01(\x0b\x32\x35.org.dash.platform.dapi.v0.PlatformFilterV0.AllEventsH\x00\x12U\n\x0f\x62lock_committed\x18\x02 \x01(\x0b\x32:.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommittedH\x00\x12j\n\x17state_transition_result\x18\x03 \x01(\x0b\x32G.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilterH\x00\x1a\x0b\n\tAllEvents\x1a\x10\n\x0e\x42lockCommitted\x1a?\n\x1bStateTransitionResultFilter\x12\x14\n\x07tx_hash\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\n\n\x08_tx_hashB\x06\n\x04kind\"\xe5\x04\n\x0fPlatformEventV0\x12T\n\x0f\x62lock_committed\x18\x01 \x01(\x0b\x32\x39.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommittedH\x00\x12i\n\x1astate_transition_finalized\x18\x02 \x01(\x0b\x32\x43.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalizedH\x00\x12I\n\tkeepalive\x18\x03 \x01(\x0b\x32\x34.org.dash.platform.dapi.v0.PlatformEventV0.KeepaliveH\x00\x1aO\n\rBlockMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x13\n\x07time_ms\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rblock_id_hash\x18\x03 \x01(\x0c\x1aj\n\x0e\x42lockCommitted\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x10\n\x08tx_count\x18\x02 \x01(\r\x1as\n\x18StateTransitionFinalized\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x0f\n\x07tx_hash\x18\x02 \x01(\x0c\x1a\x0b\n\tKeepaliveB\x07\n\x05\x65vent\"\x81\x01\n\x05Proof\x12\x15\n\rgrovedb_proof\x18\x01 \x01(\x0c\x12\x13\n\x0bquorum_hash\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\r\n\x05round\x18\x04 \x01(\r\x12\x15\n\rblock_id_hash\x18\x05 \x01(\x0c\x12\x13\n\x0bquorum_type\x18\x06 \x01(\r\"\x98\x01\n\x10ResponseMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12 \n\x18\x63ore_chain_locked_height\x18\x02 \x01(\r\x12\r\n\x05\x65poch\x18\x03 \x01(\r\x12\x13\n\x07time_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x18\n\x10protocol_version\x18\x05 \x01(\r\x12\x10\n\x08\x63hain_id\x18\x06 \x01(\t\"L\n\x1dStateTransitionBroadcastError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\";\n\x1f\x42roadcastStateTransitionRequest\x12\x18\n\x10state_transition\x18\x01 \x01(\x0c\"\"\n BroadcastStateTransitionResponse\"\xa4\x01\n\x12GetIdentityRequest\x12P\n\x02v0\x18\x01 \x01(\x0b\x32\x42.org.dash.platform.dapi.v0.GetIdentityRequest.GetIdentityRequestV0H\x00\x1a\x31\n\x14GetIdentityRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xc1\x01\n\x17GetIdentityNonceRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityNonceRequest.GetIdentityNonceRequestV0H\x00\x1a?\n\x19GetIdentityNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xf6\x01\n\x1fGetIdentityContractNonceRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest.GetIdentityContractNonceRequestV0H\x00\x1a\\\n!GetIdentityContractNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xc0\x01\n\x19GetIdentityBalanceRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetIdentityBalanceRequest.GetIdentityBalanceRequestV0H\x00\x1a\x38\n\x1bGetIdentityBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xec\x01\n$GetIdentityBalanceAndRevisionRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest.GetIdentityBalanceAndRevisionRequestV0H\x00\x1a\x43\n&GetIdentityBalanceAndRevisionRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9e\x02\n\x13GetIdentityResponse\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetIdentityResponse.GetIdentityResponseV0H\x00\x1a\xa7\x01\n\x15GetIdentityResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbc\x02\n\x18GetIdentityNonceResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetIdentityNonceResponse.GetIdentityNonceResponseV0H\x00\x1a\xb6\x01\n\x1aGetIdentityNonceResponseV0\x12\x1c\n\x0eidentity_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xe5\x02\n GetIdentityContractNonceResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse.GetIdentityContractNonceResponseV0H\x00\x1a\xc7\x01\n\"GetIdentityContractNonceResponseV0\x12%\n\x17identity_contract_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n\x1aGetIdentityBalanceResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetIdentityBalanceResponse.GetIdentityBalanceResponseV0H\x00\x1a\xb1\x01\n\x1cGetIdentityBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb1\x04\n%GetIdentityBalanceAndRevisionResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0H\x00\x1a\x84\x03\n\'GetIdentityBalanceAndRevisionResponseV0\x12\x9b\x01\n\x14\x62\x61lance_and_revision\x18\x01 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0.BalanceAndRevisionH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x12\x42\x61lanceAndRevision\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x14\n\x08revision\x18\x02 \x01(\x04\x42\x02\x30\x01\x42\x08\n\x06resultB\t\n\x07version\"\xd1\x01\n\x0eKeyRequestType\x12\x36\n\x08\x61ll_keys\x18\x01 \x01(\x0b\x32\".org.dash.platform.dapi.v0.AllKeysH\x00\x12@\n\rspecific_keys\x18\x02 \x01(\x0b\x32\'.org.dash.platform.dapi.v0.SpecificKeysH\x00\x12:\n\nsearch_key\x18\x03 \x01(\x0b\x32$.org.dash.platform.dapi.v0.SearchKeyH\x00\x42\t\n\x07request\"\t\n\x07\x41llKeys\"\x1f\n\x0cSpecificKeys\x12\x0f\n\x07key_ids\x18\x01 \x03(\r\"\xb6\x01\n\tSearchKey\x12I\n\x0bpurpose_map\x18\x01 \x03(\x0b\x32\x34.org.dash.platform.dapi.v0.SearchKey.PurposeMapEntry\x1a^\n\x0fPurposeMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.org.dash.platform.dapi.v0.SecurityLevelMap:\x02\x38\x01\"\xbf\x02\n\x10SecurityLevelMap\x12]\n\x12security_level_map\x18\x01 \x03(\x0b\x32\x41.org.dash.platform.dapi.v0.SecurityLevelMap.SecurityLevelMapEntry\x1aw\n\x15SecurityLevelMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12M\n\x05value\x18\x02 \x01(\x0e\x32>.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType:\x02\x38\x01\"S\n\x12KeyKindRequestType\x12\x1f\n\x1b\x43URRENT_KEY_OF_KIND_REQUEST\x10\x00\x12\x1c\n\x18\x41LL_KEYS_OF_KIND_REQUEST\x10\x01\"\xda\x02\n\x16GetIdentityKeysRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetIdentityKeysRequest.GetIdentityKeysRequestV0H\x00\x1a\xda\x01\n\x18GetIdentityKeysRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12?\n\x0crequest_type\x18\x02 \x01(\x0b\x32).org.dash.platform.dapi.v0.KeyRequestType\x12+\n\x05limit\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\x99\x03\n\x17GetIdentityKeysResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0H\x00\x1a\x96\x02\n\x19GetIdentityKeysResponseV0\x12\x61\n\x04keys\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0.KeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1a\n\x04Keys\x12\x12\n\nkeys_bytes\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xef\x02\n GetIdentitiesContractKeysRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest.GetIdentitiesContractKeysRequestV0H\x00\x1a\xd1\x01\n\"GetIdentitiesContractKeysRequestV0\x12\x16\n\x0eidentities_ids\x18\x01 \x03(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\x1f\n\x12\x64ocument_type_name\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x08purposes\x18\x04 \x03(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x15\n\x13_document_type_nameB\t\n\x07version\"\xdf\x06\n!GetIdentitiesContractKeysResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0H\x00\x1a\xbe\x05\n#GetIdentitiesContractKeysResponseV0\x12\x8a\x01\n\x0fidentities_keys\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentitiesKeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aY\n\x0bPurposeKeys\x12\x36\n\x07purpose\x18\x01 \x01(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\x12\n\nkeys_bytes\x18\x02 \x03(\x0c\x1a\x9f\x01\n\x0cIdentityKeys\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12z\n\x04keys\x18\x02 \x03(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.PurposeKeys\x1a\x90\x01\n\x0eIdentitiesKeys\x12~\n\x07\x65ntries\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentityKeysB\x08\n\x06resultB\t\n\x07version\"\xa4\x02\n*GetEvonodesProposedEpochBlocksByIdsRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest.GetEvonodesProposedEpochBlocksByIdsRequestV0H\x00\x1ah\n,GetEvonodesProposedEpochBlocksByIdsRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0b\n\x03ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x08\n\x06_epochB\t\n\x07version\"\x92\x06\n&GetEvonodesProposedEpochBlocksResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0H\x00\x1a\xe2\x04\n(GetEvonodesProposedEpochBlocksResponseV0\x12\xb1\x01\n#evonodes_proposed_block_counts_info\x18\x01 \x01(\x0b\x32\x81\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodesProposedBlocksH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x15\x45vonodeProposedBlocks\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x11\n\x05\x63ount\x18\x02 \x01(\x04\x42\x02\x30\x01\x1a\xc4\x01\n\x16\x45vonodesProposedBlocks\x12\xa9\x01\n\x1e\x65vonodes_proposed_block_counts\x18\x01 \x03(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodeProposedBlocksB\x08\n\x06resultB\t\n\x07version\"\xf2\x02\n,GetEvonodesProposedEpochBlocksByRangeRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest.GetEvonodesProposedEpochBlocksByRangeRequestV0H\x00\x1a\xaf\x01\n.GetEvonodesProposedEpochBlocksByRangeRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x02 \x01(\rH\x02\x88\x01\x01\x12\x15\n\x0bstart_after\x18\x03 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x04 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x07\n\x05startB\x08\n\x06_epochB\x08\n\x06_limitB\t\n\x07version\"\xcd\x01\n\x1cGetIdentitiesBalancesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest.GetIdentitiesBalancesRequestV0H\x00\x1a<\n\x1eGetIdentitiesBalancesRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9f\x05\n\x1dGetIdentitiesBalancesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0H\x00\x1a\x8a\x04\n\x1fGetIdentitiesBalancesResponseV0\x12\x8a\x01\n\x13identities_balances\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentitiesBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aL\n\x0fIdentityBalance\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x8f\x01\n\x12IdentitiesBalances\x12y\n\x07\x65ntries\x18\x01 \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentityBalanceB\x08\n\x06resultB\t\n\x07version\"\xb4\x01\n\x16GetDataContractRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetDataContractRequest.GetDataContractRequestV0H\x00\x1a\x35\n\x18GetDataContractRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xb3\x02\n\x17GetDataContractResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractResponse.GetDataContractResponseV0H\x00\x1a\xb0\x01\n\x19GetDataContractResponseV0\x12\x17\n\rdata_contract\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb9\x01\n\x17GetDataContractsRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractsRequest.GetDataContractsRequestV0H\x00\x1a\x37\n\x19GetDataContractsRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xcf\x04\n\x18GetDataContractsResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetDataContractsResponse.GetDataContractsResponseV0H\x00\x1a[\n\x11\x44\x61taContractEntry\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x32\n\rdata_contract\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x1au\n\rDataContracts\x12\x64\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32\x45.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractEntry\x1a\xf5\x01\n\x1aGetDataContractsResponseV0\x12[\n\x0e\x64\x61ta_contracts\x18\x01 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc5\x02\n\x1dGetDataContractHistoryRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetDataContractHistoryRequest.GetDataContractHistoryRequestV0H\x00\x1a\xb0\x01\n\x1fGetDataContractHistoryRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0bstart_at_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xb2\x05\n\x1eGetDataContractHistoryResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0H\x00\x1a\x9a\x04\n GetDataContractHistoryResponseV0\x12\x8f\x01\n\x15\x64\x61ta_contract_history\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a;\n\x18\x44\x61taContractHistoryEntry\x12\x10\n\x04\x64\x61te\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05value\x18\x02 \x01(\x0c\x1a\xaa\x01\n\x13\x44\x61taContractHistory\x12\x92\x01\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32s.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryEntryB\x08\n\x06resultB\t\n\x07version\"\xb2\x02\n\x13GetDocumentsRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetDocumentsRequest.GetDocumentsRequestV0H\x00\x1a\xbb\x01\n\x15GetDocumentsRequestV0\x12\x18\n\x10\x64\x61ta_contract_id\x18\x01 \x01(\x0c\x12\x15\n\rdocument_type\x18\x02 \x01(\t\x12\r\n\x05where\x18\x03 \x01(\x0c\x12\x10\n\x08order_by\x18\x04 \x01(\x0c\x12\r\n\x05limit\x18\x05 \x01(\r\x12\x15\n\x0bstart_after\x18\x06 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x07 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x08 \x01(\x08\x42\x07\n\x05startB\t\n\x07version\"\x95\x03\n\x14GetDocumentsResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0H\x00\x1a\x9b\x02\n\x16GetDocumentsResponseV0\x12\x65\n\tdocuments\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0.DocumentsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1e\n\tDocuments\x12\x11\n\tdocuments\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xed\x01\n!GetIdentityByPublicKeyHashRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest.GetIdentityByPublicKeyHashRequestV0H\x00\x1aM\n#GetIdentityByPublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xda\x02\n\"GetIdentityByPublicKeyHashResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse.GetIdentityByPublicKeyHashResponseV0H\x00\x1a\xb6\x01\n$GetIdentityByPublicKeyHashResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n*GetIdentityByNonUniquePublicKeyHashRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest.GetIdentityByNonUniquePublicKeyHashRequestV0H\x00\x1a\x80\x01\n,GetIdentityByNonUniquePublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\x18\n\x0bstart_after\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x0e\n\x0c_start_afterB\t\n\x07version\"\xd6\x06\n+GetIdentityByNonUniquePublicKeyHashResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0H\x00\x1a\x96\x05\n-GetIdentityByNonUniquePublicKeyHashResponseV0\x12\x9a\x01\n\x08identity\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityResponseH\x00\x12\x9d\x01\n\x05proof\x18\x02 \x01(\x0b\x32\x8b\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityProvedResponseH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x36\n\x10IdentityResponse\x12\x15\n\x08identity\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x0b\n\t_identity\x1a\xa6\x01\n\x16IdentityProvedResponse\x12P\n&grovedb_identity_public_key_hash_proof\x18\x01 \x01(\x0b\x32 .org.dash.platform.dapi.v0.Proof\x12!\n\x14identity_proof_bytes\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x17\n\x15_identity_proof_bytesB\x08\n\x06resultB\t\n\x07version\"\xfb\x01\n#WaitForStateTransitionResultRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0H\x00\x1aU\n%WaitForStateTransitionResultRequestV0\x12\x1d\n\x15state_transition_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x99\x03\n$WaitForStateTransitionResultResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0H\x00\x1a\xef\x01\n&WaitForStateTransitionResultResponseV0\x12I\n\x05\x65rror\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.StateTransitionBroadcastErrorH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x19GetConsensusParamsRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetConsensusParamsRequest.GetConsensusParamsRequestV0H\x00\x1a<\n\x1bGetConsensusParamsRequestV0\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9c\x04\n\x1aGetConsensusParamsResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetConsensusParamsResponse.GetConsensusParamsResponseV0H\x00\x1aP\n\x14\x43onsensusParamsBlock\x12\x11\n\tmax_bytes\x18\x01 \x01(\t\x12\x0f\n\x07max_gas\x18\x02 \x01(\t\x12\x14\n\x0ctime_iota_ms\x18\x03 \x01(\t\x1a\x62\n\x17\x43onsensusParamsEvidence\x12\x1a\n\x12max_age_num_blocks\x18\x01 \x01(\t\x12\x18\n\x10max_age_duration\x18\x02 \x01(\t\x12\x11\n\tmax_bytes\x18\x03 \x01(\t\x1a\xda\x01\n\x1cGetConsensusParamsResponseV0\x12Y\n\x05\x62lock\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsBlock\x12_\n\x08\x65vidence\x18\x02 \x01(\x0b\x32M.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsEvidenceB\t\n\x07version\"\xe4\x01\n%GetProtocolVersionUpgradeStateRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest.GetProtocolVersionUpgradeStateRequestV0H\x00\x1a\x38\n\'GetProtocolVersionUpgradeStateRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xb5\x05\n&GetProtocolVersionUpgradeStateResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0H\x00\x1a\x85\x04\n(GetProtocolVersionUpgradeStateResponseV0\x12\x87\x01\n\x08versions\x18\x01 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x96\x01\n\x08Versions\x12\x89\x01\n\x08versions\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionEntry\x1a:\n\x0cVersionEntry\x12\x16\n\x0eversion_number\x18\x01 \x01(\r\x12\x12\n\nvote_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xa3\x02\n*GetProtocolVersionUpgradeVoteStatusRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest.GetProtocolVersionUpgradeVoteStatusRequestV0H\x00\x1ag\n,GetProtocolVersionUpgradeVoteStatusRequestV0\x12\x19\n\x11start_pro_tx_hash\x18\x01 \x01(\x0c\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xef\x05\n+GetProtocolVersionUpgradeVoteStatusResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0H\x00\x1a\xaf\x04\n-GetProtocolVersionUpgradeVoteStatusResponseV0\x12\x98\x01\n\x08versions\x18\x01 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignalsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xaf\x01\n\x0eVersionSignals\x12\x9c\x01\n\x0fversion_signals\x18\x01 \x03(\x0b\x32\x82\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignal\x1a\x35\n\rVersionSignal\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07version\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xf5\x01\n\x14GetEpochsInfoRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetEpochsInfoRequest.GetEpochsInfoRequestV0H\x00\x1a|\n\x16GetEpochsInfoRequestV0\x12\x31\n\x0bstart_epoch\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\x11\n\tascending\x18\x03 \x01(\x08\x12\r\n\x05prove\x18\x04 \x01(\x08\x42\t\n\x07version\"\x99\x05\n\x15GetEpochsInfoResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0H\x00\x1a\x9c\x04\n\x17GetEpochsInfoResponseV0\x12\x65\n\x06\x65pochs\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1au\n\nEpochInfos\x12g\n\x0b\x65poch_infos\x18\x01 \x03(\x0b\x32R.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfo\x1a\xa6\x01\n\tEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x16\n\nstart_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xbf\x02\n\x1dGetFinalizedEpochInfosRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest.GetFinalizedEpochInfosRequestV0H\x00\x1a\xaa\x01\n\x1fGetFinalizedEpochInfosRequestV0\x12\x19\n\x11start_epoch_index\x18\x01 \x01(\r\x12\"\n\x1astart_epoch_index_included\x18\x02 \x01(\x08\x12\x17\n\x0f\x65nd_epoch_index\x18\x03 \x01(\r\x12 \n\x18\x65nd_epoch_index_included\x18\x04 \x01(\x08\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xbd\t\n\x1eGetFinalizedEpochInfosResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0H\x00\x1a\xa5\x08\n GetFinalizedEpochInfosResponseV0\x12\x80\x01\n\x06\x65pochs\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xa4\x01\n\x13\x46inalizedEpochInfos\x12\x8c\x01\n\x15\x66inalized_epoch_infos\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfo\x1a\x9f\x04\n\x12\x46inalizedEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x1c\n\x10\x66irst_block_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\r\x12!\n\x15total_blocks_in_epoch\x18\x07 \x01(\x04\x42\x02\x30\x01\x12*\n\"next_epoch_start_core_block_height\x18\x08 \x01(\r\x12!\n\x15total_processing_fees\x18\t \x01(\x04\x42\x02\x30\x01\x12*\n\x1etotal_distributed_storage_fees\x18\n \x01(\x04\x42\x02\x30\x01\x12&\n\x1atotal_created_storage_fees\x18\x0b \x01(\x04\x42\x02\x30\x01\x12\x1e\n\x12\x63ore_block_rewards\x18\x0c \x01(\x04\x42\x02\x30\x01\x12\x81\x01\n\x0f\x62lock_proposers\x18\r \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.BlockProposer\x1a\x39\n\rBlockProposer\x12\x13\n\x0bproposer_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x62lock_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xde\x04\n\x1cGetContestedResourcesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0H\x00\x1a\xcc\x03\n\x1eGetContestedResourcesRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x1a\n\x12start_index_values\x18\x04 \x03(\x0c\x12\x18\n\x10\x65nd_index_values\x18\x05 \x03(\x0c\x12\x89\x01\n\x13start_at_value_info\x18\x06 \x01(\x0b\x32g.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0.StartAtValueInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1a\x45\n\x10StartAtValueInfo\x12\x13\n\x0bstart_value\x18\x01 \x01(\x0c\x12\x1c\n\x14start_value_included\x18\x02 \x01(\x08\x42\x16\n\x14_start_at_value_infoB\x08\n\x06_countB\t\n\x07version\"\x88\x04\n\x1dGetContestedResourcesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0H\x00\x1a\xf3\x02\n\x1fGetContestedResourcesResponseV0\x12\x95\x01\n\x19\x63ontested_resource_values\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0.ContestedResourceValuesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a<\n\x17\x43ontestedResourceValues\x12!\n\x19\x63ontested_resource_values\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x05\n\x1cGetVotePollsByEndDateRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0H\x00\x1a\xc0\x04\n\x1eGetVotePollsByEndDateRequestV0\x12\x84\x01\n\x0fstart_time_info\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.StartAtTimeInfoH\x00\x88\x01\x01\x12\x80\x01\n\rend_time_info\x18\x02 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.EndAtTimeInfoH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x11\n\tascending\x18\x05 \x01(\x08\x12\r\n\x05prove\x18\x06 \x01(\x08\x1aI\n\x0fStartAtTimeInfo\x12\x19\n\rstart_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13start_time_included\x18\x02 \x01(\x08\x1a\x43\n\rEndAtTimeInfo\x12\x17\n\x0b\x65nd_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x65nd_time_included\x18\x02 \x01(\x08\x42\x12\n\x10_start_time_infoB\x10\n\x0e_end_time_infoB\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07version\"\x83\x06\n\x1dGetVotePollsByEndDateResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0H\x00\x1a\xee\x04\n\x1fGetVotePollsByEndDateResponseV0\x12\x9c\x01\n\x18vote_polls_by_timestamps\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestampsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aV\n\x1eSerializedVotePollsByTimestamp\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x15serialized_vote_polls\x18\x02 \x03(\x0c\x1a\xd7\x01\n\x1fSerializedVotePollsByTimestamps\x12\x99\x01\n\x18vote_polls_by_timestamps\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestamp\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xff\x06\n$GetContestedResourceVoteStateRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0H\x00\x1a\xd5\x05\n&GetContestedResourceVoteStateRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x86\x01\n\x0bresult_type\x18\x05 \x01(\x0e\x32q.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.ResultType\x12\x36\n.allow_include_locked_and_abstaining_vote_tally\x18\x06 \x01(\x08\x12\xa3\x01\n\x18start_at_identifier_info\x18\x07 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x08 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\"I\n\nResultType\x12\r\n\tDOCUMENTS\x10\x00\x12\x0e\n\nVOTE_TALLY\x10\x01\x12\x1c\n\x18\x44OCUMENTS_AND_VOTE_TALLY\x10\x02\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\x94\x0c\n%GetContestedResourceVoteStateResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0H\x00\x1a\xe7\n\n\'GetContestedResourceVoteStateResponseV0\x12\xae\x01\n\x1d\x63ontested_resource_contenders\x18\x01 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.ContestedResourceContendersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xda\x03\n\x10\x46inishedVoteInfo\x12\xad\x01\n\x15\x66inished_vote_outcome\x18\x01 \x01(\x0e\x32\x8d\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfo.FinishedVoteOutcome\x12\x1f\n\x12won_by_identity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12$\n\x18\x66inished_at_block_height\x18\x03 \x01(\x04\x42\x02\x30\x01\x12%\n\x1d\x66inished_at_core_block_height\x18\x04 \x01(\r\x12%\n\x19\x66inished_at_block_time_ms\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x66inished_at_epoch\x18\x06 \x01(\r\"O\n\x13\x46inishedVoteOutcome\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\n\n\x06LOCKED\x10\x01\x12\x16\n\x12NO_PREVIOUS_WINNER\x10\x02\x42\x15\n\x13_won_by_identity_id\x1a\xc4\x03\n\x1b\x43ontestedResourceContenders\x12\x86\x01\n\ncontenders\x18\x01 \x03(\x0b\x32r.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.Contender\x12\x1f\n\x12\x61\x62stain_vote_tally\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0flock_vote_tally\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x9a\x01\n\x12\x66inished_vote_info\x18\x04 \x01(\x0b\x32y.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfoH\x02\x88\x01\x01\x42\x15\n\x13_abstain_vote_tallyB\x12\n\x10_lock_vote_tallyB\x15\n\x13_finished_vote_info\x1ak\n\tContender\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x17\n\nvote_count\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08\x64ocument\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x42\r\n\x0b_vote_countB\x0b\n\t_documentB\x08\n\x06resultB\t\n\x07version\"\xd5\x05\n,GetContestedResourceVotersForIdentityRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0H\x00\x1a\x92\x04\n.GetContestedResourceVotersForIdentityRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x15\n\rcontestant_id\x18\x05 \x01(\x0c\x12\xb4\x01\n\x18start_at_identifier_info\x18\x06 \x01(\x0b\x32\x8c\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\xf1\x04\n-GetContestedResourceVotersForIdentityResponse\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0H\x00\x1a\xab\x03\n/GetContestedResourceVotersForIdentityResponseV0\x12\xb6\x01\n\x19\x63ontested_resource_voters\x18\x01 \x01(\x0b\x32\x90\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0.ContestedResourceVotersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x43\n\x17\x43ontestedResourceVoters\x12\x0e\n\x06voters\x18\x01 \x03(\x0c\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xad\x05\n(GetContestedResourceIdentityVotesRequest\x12|\n\x02v0\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0H\x00\x1a\xf7\x03\n*GetContestedResourceIdentityVotesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0forder_ascending\x18\x04 \x01(\x08\x12\xae\x01\n\x1astart_at_vote_poll_id_info\x18\x05 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0.StartAtVotePollIdInfoH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x1a\x61\n\x15StartAtVotePollIdInfo\x12 \n\x18start_at_poll_identifier\x18\x01 \x01(\x0c\x12&\n\x1estart_poll_identifier_included\x18\x02 \x01(\x08\x42\x1d\n\x1b_start_at_vote_poll_id_infoB\t\n\x07version\"\xc8\n\n)GetContestedResourceIdentityVotesResponse\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0H\x00\x1a\x8f\t\n+GetContestedResourceIdentityVotesResponseV0\x12\xa1\x01\n\x05votes\x18\x01 \x01(\x0b\x32\x8f\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVotesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xf7\x01\n\x1e\x43ontestedResourceIdentityVotes\x12\xba\x01\n!contested_resource_identity_votes\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVote\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x1a\xad\x02\n\x12ResourceVoteChoice\x12\xad\x01\n\x10vote_choice_type\x18\x01 \x01(\x0e\x32\x92\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoice.VoteChoiceType\x12\x18\n\x0bidentity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\"=\n\x0eVoteChoiceType\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\x0b\n\x07\x41\x42STAIN\x10\x01\x12\x08\n\x04LOCK\x10\x02\x42\x0e\n\x0c_identity_id\x1a\x95\x02\n\x1d\x43ontestedResourceIdentityVote\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\'\n\x1fserialized_index_storage_values\x18\x03 \x03(\x0c\x12\x99\x01\n\x0bvote_choice\x18\x04 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoiceB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n%GetPrefundedSpecializedBalanceRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest.GetPrefundedSpecializedBalanceRequestV0H\x00\x1a\x44\n\'GetPrefundedSpecializedBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xed\x02\n&GetPrefundedSpecializedBalanceResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse.GetPrefundedSpecializedBalanceResponseV0H\x00\x1a\xbd\x01\n(GetPrefundedSpecializedBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xd0\x01\n GetTotalCreditsInPlatformRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest.GetTotalCreditsInPlatformRequestV0H\x00\x1a\x33\n\"GetTotalCreditsInPlatformRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xd9\x02\n!GetTotalCreditsInPlatformResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse.GetTotalCreditsInPlatformResponseV0H\x00\x1a\xb8\x01\n#GetTotalCreditsInPlatformResponseV0\x12\x15\n\x07\x63redits\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x16GetPathElementsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetPathElementsRequest.GetPathElementsRequestV0H\x00\x1a\x45\n\x18GetPathElementsRequestV0\x12\x0c\n\x04path\x18\x01 \x03(\x0c\x12\x0c\n\x04keys\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xa3\x03\n\x17GetPathElementsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0H\x00\x1a\xa0\x02\n\x19GetPathElementsResponseV0\x12i\n\x08\x65lements\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0.ElementsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1c\n\x08\x45lements\x12\x10\n\x08\x65lements\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\x81\x01\n\x10GetStatusRequest\x12L\n\x02v0\x18\x01 \x01(\x0b\x32>.org.dash.platform.dapi.v0.GetStatusRequest.GetStatusRequestV0H\x00\x1a\x14\n\x12GetStatusRequestV0B\t\n\x07version\"\xe4\x10\n\x11GetStatusResponse\x12N\n\x02v0\x18\x01 \x01(\x0b\x32@.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0H\x00\x1a\xf3\x0f\n\x13GetStatusResponseV0\x12Y\n\x07version\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version\x12S\n\x04node\x18\x02 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Node\x12U\n\x05\x63hain\x18\x03 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Chain\x12Y\n\x07network\x18\x04 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Network\x12^\n\nstate_sync\x18\x05 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.StateSync\x12S\n\x04time\x18\x06 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Time\x1a\x82\x05\n\x07Version\x12\x63\n\x08software\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Software\x12\x63\n\x08protocol\x18\x02 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol\x1a^\n\x08Software\x12\x0c\n\x04\x64\x61pi\x18\x01 \x01(\t\x12\x12\n\x05\x64rive\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ntenderdash\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_driveB\r\n\x0b_tenderdash\x1a\xcc\x02\n\x08Protocol\x12p\n\ntenderdash\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Tenderdash\x12\x66\n\x05\x64rive\x18\x02 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Drive\x1a(\n\nTenderdash\x12\x0b\n\x03p2p\x18\x01 \x01(\r\x12\r\n\x05\x62lock\x18\x02 \x01(\r\x1a<\n\x05\x44rive\x12\x0e\n\x06latest\x18\x03 \x01(\r\x12\x0f\n\x07\x63urrent\x18\x04 \x01(\r\x12\x12\n\nnext_epoch\x18\x05 \x01(\r\x1a\x7f\n\x04Time\x12\x11\n\x05local\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x05\x62lock\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x12\x18\n\x07genesis\x18\x03 \x01(\x04\x42\x02\x30\x01H\x01\x88\x01\x01\x12\x12\n\x05\x65poch\x18\x04 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_blockB\n\n\x08_genesisB\x08\n\x06_epoch\x1a<\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x18\n\x0bpro_tx_hash\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x0e\n\x0c_pro_tx_hash\x1a\xb3\x02\n\x05\x43hain\x12\x13\n\x0b\x63\x61tching_up\x18\x01 \x01(\x08\x12\x19\n\x11latest_block_hash\x18\x02 \x01(\x0c\x12\x17\n\x0flatest_app_hash\x18\x03 \x01(\x0c\x12\x1f\n\x13latest_block_height\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13\x65\x61rliest_block_hash\x18\x05 \x01(\x0c\x12\x19\n\x11\x65\x61rliest_app_hash\x18\x06 \x01(\x0c\x12!\n\x15\x65\x61rliest_block_height\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15max_peer_block_height\x18\t \x01(\x04\x42\x02\x30\x01\x12%\n\x18\x63ore_chain_locked_height\x18\n \x01(\rH\x00\x88\x01\x01\x42\x1b\n\x19_core_chain_locked_height\x1a\x43\n\x07Network\x12\x10\n\x08\x63hain_id\x18\x01 \x01(\t\x12\x13\n\x0bpeers_count\x18\x02 \x01(\r\x12\x11\n\tlistening\x18\x03 \x01(\x08\x1a\x85\x02\n\tStateSync\x12\x1d\n\x11total_synced_time\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1a\n\x0eremaining_time\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0ftotal_snapshots\x18\x03 \x01(\r\x12\"\n\x16\x63hunk_process_avg_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x0fsnapshot_height\x18\x05 \x01(\x04\x42\x02\x30\x01\x12!\n\x15snapshot_chunks_count\x18\x06 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x11\x62\x61\x63kfilled_blocks\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15\x62\x61\x63kfill_blocks_total\x18\x08 \x01(\x04\x42\x02\x30\x01\x42\t\n\x07version\"\xb1\x01\n\x1cGetCurrentQuorumsInfoRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest.GetCurrentQuorumsInfoRequestV0H\x00\x1a \n\x1eGetCurrentQuorumsInfoRequestV0B\t\n\x07version\"\xa1\x05\n\x1dGetCurrentQuorumsInfoResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.GetCurrentQuorumsInfoResponseV0H\x00\x1a\x46\n\x0bValidatorV0\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07node_ip\x18\x02 \x01(\t\x12\x11\n\tis_banned\x18\x03 \x01(\x08\x1a\xaf\x01\n\x0eValidatorSetV0\x12\x13\n\x0bquorum_hash\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ore_height\x18\x02 \x01(\r\x12U\n\x07members\x18\x03 \x03(\x0b\x32\x44.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorV0\x12\x1c\n\x14threshold_public_key\x18\x04 \x01(\x0c\x1a\x92\x02\n\x1fGetCurrentQuorumsInfoResponseV0\x12\x15\n\rquorum_hashes\x18\x01 \x03(\x0c\x12\x1b\n\x13\x63urrent_quorum_hash\x18\x02 \x01(\x0c\x12_\n\x0evalidator_sets\x18\x03 \x03(\x0b\x32G.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorSetV0\x12\x1b\n\x13last_block_proposer\x18\x04 \x01(\x0c\x12=\n\x08metadata\x18\x05 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\t\n\x07version\"\xf4\x01\n\x1fGetIdentityTokenBalancesRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest.GetIdentityTokenBalancesRequestV0H\x00\x1aZ\n!GetIdentityTokenBalancesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xad\x05\n GetIdentityTokenBalancesResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0H\x00\x1a\x8f\x04\n\"GetIdentityTokenBalancesResponseV0\x12\x86\x01\n\x0etoken_balances\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aG\n\x11TokenBalanceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x9a\x01\n\rTokenBalances\x12\x88\x01\n\x0etoken_balances\x18\x01 \x03(\x0b\x32p.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xfc\x01\n!GetIdentitiesTokenBalancesRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest.GetIdentitiesTokenBalancesRequestV0H\x00\x1a\\\n#GetIdentitiesTokenBalancesRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xf2\x05\n\"GetIdentitiesTokenBalancesResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0H\x00\x1a\xce\x04\n$GetIdentitiesTokenBalancesResponseV0\x12\x9b\x01\n\x17identity_token_balances\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aR\n\x19IdentityTokenBalanceEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\xb7\x01\n\x15IdentityTokenBalances\x12\x9d\x01\n\x17identity_token_balances\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xe8\x01\n\x1cGetIdentityTokenInfosRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest.GetIdentityTokenInfosRequestV0H\x00\x1aW\n\x1eGetIdentityTokenInfosRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\x98\x06\n\x1dGetIdentityTokenInfosResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0H\x00\x1a\x83\x05\n\x1fGetIdentityTokenInfosResponseV0\x12z\n\x0btoken_infos\x18\x01 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb0\x01\n\x0eTokenInfoEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x82\x01\n\x04info\x18\x02 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x8a\x01\n\nTokenInfos\x12|\n\x0btoken_infos\x18\x01 \x03(\x0b\x32g.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n\x1eGetIdentitiesTokenInfosRequest\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest.GetIdentitiesTokenInfosRequestV0H\x00\x1aY\n GetIdentitiesTokenInfosRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xca\x06\n\x1fGetIdentitiesTokenInfosResponse\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0H\x00\x1a\xaf\x05\n!GetIdentitiesTokenInfosResponseV0\x12\x8f\x01\n\x14identity_token_infos\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.IdentityTokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb7\x01\n\x0eTokenInfoEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x86\x01\n\x04info\x18\x02 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x97\x01\n\x12IdentityTokenInfos\x12\x80\x01\n\x0btoken_infos\x18\x01 \x03(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbf\x01\n\x17GetTokenStatusesRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetTokenStatusesRequest.GetTokenStatusesRequestV0H\x00\x1a=\n\x19GetTokenStatusesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xe7\x04\n\x18GetTokenStatusesResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0H\x00\x1a\xe1\x03\n\x1aGetTokenStatusesResponseV0\x12v\n\x0etoken_statuses\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x44\n\x10TokenStatusEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x13\n\x06paused\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_paused\x1a\x88\x01\n\rTokenStatuses\x12w\n\x0etoken_statuses\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusEntryB\x08\n\x06resultB\t\n\x07version\"\xef\x01\n#GetTokenDirectPurchasePricesRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest.GetTokenDirectPurchasePricesRequestV0H\x00\x1aI\n%GetTokenDirectPurchasePricesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x8b\t\n$GetTokenDirectPurchasePricesResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0H\x00\x1a\xe1\x07\n&GetTokenDirectPurchasePricesResponseV0\x12\xa9\x01\n\x1ctoken_direct_purchase_prices\x18\x01 \x01(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePricesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xa7\x01\n\x0fPricingSchedule\x12\x93\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PriceForQuantity\x1a\xe4\x01\n\x1dTokenDirectPurchasePriceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x15\n\x0b\x66ixed_price\x18\x02 \x01(\x04H\x00\x12\x90\x01\n\x0evariable_price\x18\x03 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PricingScheduleH\x00\x42\x07\n\x05price\x1a\xc8\x01\n\x19TokenDirectPurchasePrices\x12\xaa\x01\n\x1btoken_direct_purchase_price\x18\x01 \x03(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePriceEntryB\x08\n\x06resultB\t\n\x07version\"\xce\x01\n\x1bGetTokenContractInfoRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenContractInfoRequest.GetTokenContractInfoRequestV0H\x00\x1a@\n\x1dGetTokenContractInfoRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xfb\x03\n\x1cGetTokenContractInfoResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0H\x00\x1a\xe9\x02\n\x1eGetTokenContractInfoResponseV0\x12|\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0.TokenContractInfoDataH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aM\n\x15TokenContractInfoData\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xef\x04\n)GetTokenPreProgrammedDistributionsRequest\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0H\x00\x1a\xb6\x03\n+GetTokenPreProgrammedDistributionsRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x98\x01\n\rstart_at_info\x18\x02 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0.StartAtInfoH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x1a\x9a\x01\n\x0bStartAtInfo\x12\x15\n\rstart_time_ms\x18\x01 \x01(\x04\x12\x1c\n\x0fstart_recipient\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12%\n\x18start_recipient_included\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_start_recipientB\x1b\n\x19_start_recipient_includedB\x10\n\x0e_start_at_infoB\x08\n\x06_limitB\t\n\x07version\"\xec\x07\n*GetTokenPreProgrammedDistributionsResponse\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0H\x00\x1a\xaf\x06\n,GetTokenPreProgrammedDistributionsResponseV0\x12\xa5\x01\n\x13token_distributions\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a>\n\x16TokenDistributionEntry\x12\x14\n\x0crecipient_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x1a\xd4\x01\n\x1bTokenTimedDistributionEntry\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\xa1\x01\n\rdistributions\x18\x02 \x03(\x0b\x32\x89\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionEntry\x1a\xc3\x01\n\x12TokenDistributions\x12\xac\x01\n\x13token_distributions\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenTimedDistributionEntryB\x08\n\x06resultB\t\n\x07version\"\x82\x04\n-GetTokenPerpetualDistributionLastClaimRequest\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.GetTokenPerpetualDistributionLastClaimRequestV0H\x00\x1aI\n\x11\x43ontractTokenInfo\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\r\x1a\xf1\x01\n/GetTokenPerpetualDistributionLastClaimRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12v\n\rcontract_info\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.ContractTokenInfoH\x00\x88\x01\x01\x12\x13\n\x0bidentity_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x10\n\x0e_contract_infoB\t\n\x07version\"\x93\x05\n.GetTokenPerpetualDistributionLastClaimResponse\x12\x88\x01\n\x02v0\x18\x01 \x01(\x0b\x32z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0H\x00\x1a\xca\x03\n0GetTokenPerpetualDistributionLastClaimResponseV0\x12\x9f\x01\n\nlast_claim\x18\x01 \x01(\x0b\x32\x88\x01.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0.LastClaimInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\rLastClaimInfo\x12\x1a\n\x0ctimestamp_ms\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x1a\n\x0c\x62lock_height\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x12\x0f\n\x05\x65poch\x18\x03 \x01(\rH\x00\x12\x13\n\traw_bytes\x18\x04 \x01(\x0cH\x00\x42\t\n\x07paid_atB\x08\n\x06resultB\t\n\x07version\"\xca\x01\n\x1aGetTokenTotalSupplyRequest\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest.GetTokenTotalSupplyRequestV0H\x00\x1a?\n\x1cGetTokenTotalSupplyRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xaf\x04\n\x1bGetTokenTotalSupplyResponse\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0H\x00\x1a\xa0\x03\n\x1dGetTokenTotalSupplyResponseV0\x12\x88\x01\n\x12token_total_supply\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0.TokenTotalSupplyEntryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\x15TokenTotalSupplyEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x30\n(total_aggregated_amount_in_user_accounts\x18\x02 \x01(\x04\x12\x1b\n\x13total_system_amount\x18\x03 \x01(\x04\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x01\n\x13GetGroupInfoRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetGroupInfoRequest.GetGroupInfoRequestV0H\x00\x1a\\\n\x15GetGroupInfoRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xd4\x05\n\x14GetGroupInfoResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0H\x00\x1a\xda\x04\n\x16GetGroupInfoResponseV0\x12\x66\n\ngroup_info\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x98\x01\n\x0eGroupInfoEntry\x12h\n\x07members\x18\x01 \x03(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x02 \x01(\r\x1a\x8a\x01\n\tGroupInfo\x12n\n\ngroup_info\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoEntryH\x00\x88\x01\x01\x42\r\n\x0b_group_infoB\x08\n\x06resultB\t\n\x07version\"\xed\x03\n\x14GetGroupInfosRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfosRequest.GetGroupInfosRequestV0H\x00\x1au\n\x1cStartAtGroupContractPosition\x12%\n\x1dstart_group_contract_position\x18\x01 \x01(\r\x12.\n&start_group_contract_position_included\x18\x02 \x01(\x08\x1a\xfc\x01\n\x16GetGroupInfosRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12{\n start_at_group_contract_position\x18\x02 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupInfosRequest.StartAtGroupContractPositionH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x42#\n!_start_at_group_contract_positionB\x08\n\x06_countB\t\n\x07version\"\xff\x05\n\x15GetGroupInfosResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0H\x00\x1a\x82\x05\n\x17GetGroupInfosResponseV0\x12j\n\x0bgroup_infos\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\xc3\x01\n\x16GroupPositionInfoEntry\x12\x1f\n\x17group_contract_position\x18\x01 \x01(\r\x12j\n\x07members\x18\x02 \x03(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x03 \x01(\r\x1a\x82\x01\n\nGroupInfos\x12t\n\x0bgroup_infos\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupPositionInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbe\x04\n\x16GetGroupActionsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetGroupActionsRequest.GetGroupActionsRequestV0H\x00\x1aL\n\x0fStartAtActionId\x12\x17\n\x0fstart_action_id\x18\x01 \x01(\x0c\x12 \n\x18start_action_id_included\x18\x02 \x01(\x08\x1a\xc8\x02\n\x18GetGroupActionsRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12N\n\x06status\x18\x03 \x01(\x0e\x32>.org.dash.platform.dapi.v0.GetGroupActionsRequest.ActionStatus\x12\x62\n\x12start_at_action_id\x18\x04 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetGroupActionsRequest.StartAtActionIdH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x42\x15\n\x13_start_at_action_idB\x08\n\x06_count\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\xd6\x1e\n\x17GetGroupActionsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0H\x00\x1a\xd3\x1d\n\x19GetGroupActionsResponseV0\x12r\n\rgroup_actions\x18\x01 \x01(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a[\n\tMintEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0crecipient_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a[\n\tBurnEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0c\x62urn_from_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aJ\n\x0b\x46reezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aL\n\rUnfreezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x66\n\x17\x44\x65stroyFrozenFundsEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x13SharedEncryptedNote\x12\x18\n\x10sender_key_index\x18\x01 \x01(\r\x12\x1b\n\x13recipient_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a{\n\x15PersonalEncryptedNote\x12!\n\x19root_encryption_key_index\x18\x01 \x01(\r\x12\'\n\x1f\x64\x65rivation_encryption_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a\xe9\x01\n\x14\x45mergencyActionEvent\x12\x81\x01\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32l.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEvent.ActionType\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\"#\n\nActionType\x12\t\n\x05PAUSE\x10\x00\x12\n\n\x06RESUME\x10\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x16TokenConfigUpdateEvent\x12 \n\x18token_config_update_item\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\xe6\x03\n\x1eUpdateDirectPurchasePriceEvent\x12\x15\n\x0b\x66ixed_price\x18\x01 \x01(\x04H\x00\x12\x95\x01\n\x0evariable_price\x18\x02 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PricingScheduleH\x00\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x01\x88\x01\x01\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xac\x01\n\x0fPricingSchedule\x12\x98\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PriceForQuantityB\x07\n\x05priceB\x0e\n\x0c_public_note\x1a\xfc\x02\n\x10GroupActionEvent\x12n\n\x0btoken_event\x18\x01 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenEventH\x00\x12t\n\x0e\x64ocument_event\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentEventH\x00\x12t\n\x0e\x63ontract_event\x18\x03 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractEventH\x00\x42\x0c\n\nevent_type\x1a\x8b\x01\n\rDocumentEvent\x12r\n\x06\x63reate\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentCreateEventH\x00\x42\x06\n\x04type\x1a/\n\x13\x44ocumentCreateEvent\x12\x18\n\x10\x63reated_document\x18\x01 \x01(\x0c\x1a/\n\x13\x43ontractUpdateEvent\x12\x18\n\x10updated_contract\x18\x01 \x01(\x0c\x1a\x8b\x01\n\rContractEvent\x12r\n\x06update\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractUpdateEventH\x00\x42\x06\n\x04type\x1a\xd1\x07\n\nTokenEvent\x12\x66\n\x04mint\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.MintEventH\x00\x12\x66\n\x04\x62urn\x18\x02 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.BurnEventH\x00\x12j\n\x06\x66reeze\x18\x03 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.FreezeEventH\x00\x12n\n\x08unfreeze\x18\x04 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UnfreezeEventH\x00\x12\x84\x01\n\x14\x64\x65stroy_frozen_funds\x18\x05 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DestroyFrozenFundsEventH\x00\x12}\n\x10\x65mergency_action\x18\x06 \x01(\x0b\x32\x61.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEventH\x00\x12\x82\x01\n\x13token_config_update\x18\x07 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenConfigUpdateEventH\x00\x12\x83\x01\n\x0cupdate_price\x18\x08 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEventH\x00\x42\x06\n\x04type\x1a\x93\x01\n\x10GroupActionEntry\x12\x11\n\taction_id\x18\x01 \x01(\x0c\x12l\n\x05\x65vent\x18\x02 \x01(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEvent\x1a\x84\x01\n\x0cGroupActions\x12t\n\rgroup_actions\x18\x01 \x03(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEntryB\x08\n\x06resultB\t\n\x07version\"\x88\x03\n\x1cGetGroupActionSignersRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.GetGroupActionSignersRequestV0H\x00\x1a\xce\x01\n\x1eGetGroupActionSignersRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12T\n\x06status\x18\x03 \x01(\x0e\x32\x44.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.ActionStatus\x12\x11\n\taction_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\x8b\x05\n\x1dGetGroupActionSignersResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0H\x00\x1a\xf6\x03\n\x1fGetGroupActionSignersResponseV0\x12\x8b\x01\n\x14group_action_signers\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x35\n\x11GroupActionSigner\x12\x11\n\tsigner_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x91\x01\n\x12GroupActionSigners\x12{\n\x07signers\x18\x01 \x03(\x0b\x32j.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignerB\x08\n\x06resultB\t\n\x07version*Z\n\nKeyPurpose\x12\x12\n\x0e\x41UTHENTICATION\x10\x00\x12\x0e\n\nENCRYPTION\x10\x01\x12\x0e\n\nDECRYPTION\x10\x02\x12\x0c\n\x08TRANSFER\x10\x03\x12\n\n\x06VOTING\x10\x05\x32\xf4\x36\n\x08Platform\x12\x93\x01\n\x18\x62roadcastStateTransition\x12:.org.dash.platform.dapi.v0.BroadcastStateTransitionRequest\x1a;.org.dash.platform.dapi.v0.BroadcastStateTransitionResponse\x12l\n\x0bgetIdentity\x12-.org.dash.platform.dapi.v0.GetIdentityRequest\x1a..org.dash.platform.dapi.v0.GetIdentityResponse\x12x\n\x0fgetIdentityKeys\x12\x31.org.dash.platform.dapi.v0.GetIdentityKeysRequest\x1a\x32.org.dash.platform.dapi.v0.GetIdentityKeysResponse\x12\x96\x01\n\x19getIdentitiesContractKeys\x12;.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest\x1a<.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse\x12{\n\x10getIdentityNonce\x12\x32.org.dash.platform.dapi.v0.GetIdentityNonceRequest\x1a\x33.org.dash.platform.dapi.v0.GetIdentityNonceResponse\x12\x93\x01\n\x18getIdentityContractNonce\x12:.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse\x12\x81\x01\n\x12getIdentityBalance\x12\x34.org.dash.platform.dapi.v0.GetIdentityBalanceRequest\x1a\x35.org.dash.platform.dapi.v0.GetIdentityBalanceResponse\x12\x8a\x01\n\x15getIdentitiesBalances\x12\x37.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse\x12\xa2\x01\n\x1dgetIdentityBalanceAndRevision\x12?.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest\x1a@.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse\x12\xaf\x01\n#getEvonodesProposedEpochBlocksByIds\x12\x45.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12\xb3\x01\n%getEvonodesProposedEpochBlocksByRange\x12G.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12x\n\x0fgetDataContract\x12\x31.org.dash.platform.dapi.v0.GetDataContractRequest\x1a\x32.org.dash.platform.dapi.v0.GetDataContractResponse\x12\x8d\x01\n\x16getDataContractHistory\x12\x38.org.dash.platform.dapi.v0.GetDataContractHistoryRequest\x1a\x39.org.dash.platform.dapi.v0.GetDataContractHistoryResponse\x12{\n\x10getDataContracts\x12\x32.org.dash.platform.dapi.v0.GetDataContractsRequest\x1a\x33.org.dash.platform.dapi.v0.GetDataContractsResponse\x12o\n\x0cgetDocuments\x12..org.dash.platform.dapi.v0.GetDocumentsRequest\x1a/.org.dash.platform.dapi.v0.GetDocumentsResponse\x12\x99\x01\n\x1agetIdentityByPublicKeyHash\x12<.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest\x1a=.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse\x12\xb4\x01\n#getIdentityByNonUniquePublicKeyHash\x12\x45.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest\x1a\x46.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse\x12\x9f\x01\n\x1cwaitForStateTransitionResult\x12>.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest\x1a?.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse\x12\x81\x01\n\x12getConsensusParams\x12\x34.org.dash.platform.dapi.v0.GetConsensusParamsRequest\x1a\x35.org.dash.platform.dapi.v0.GetConsensusParamsResponse\x12\xa5\x01\n\x1egetProtocolVersionUpgradeState\x12@.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest\x1a\x41.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse\x12\xb4\x01\n#getProtocolVersionUpgradeVoteStatus\x12\x45.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest\x1a\x46.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse\x12r\n\rgetEpochsInfo\x12/.org.dash.platform.dapi.v0.GetEpochsInfoRequest\x1a\x30.org.dash.platform.dapi.v0.GetEpochsInfoResponse\x12\x8d\x01\n\x16getFinalizedEpochInfos\x12\x38.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest\x1a\x39.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse\x12\x8a\x01\n\x15getContestedResources\x12\x37.org.dash.platform.dapi.v0.GetContestedResourcesRequest\x1a\x38.org.dash.platform.dapi.v0.GetContestedResourcesResponse\x12\xa2\x01\n\x1dgetContestedResourceVoteState\x12?.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest\x1a@.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse\x12\xba\x01\n%getContestedResourceVotersForIdentity\x12G.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest\x1aH.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse\x12\xae\x01\n!getContestedResourceIdentityVotes\x12\x43.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest\x1a\x44.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse\x12\x8a\x01\n\x15getVotePollsByEndDate\x12\x37.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest\x1a\x38.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse\x12\xa5\x01\n\x1egetPrefundedSpecializedBalance\x12@.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest\x1a\x41.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse\x12\x96\x01\n\x19getTotalCreditsInPlatform\x12;.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest\x1a<.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse\x12x\n\x0fgetPathElements\x12\x31.org.dash.platform.dapi.v0.GetPathElementsRequest\x1a\x32.org.dash.platform.dapi.v0.GetPathElementsResponse\x12\x66\n\tgetStatus\x12+.org.dash.platform.dapi.v0.GetStatusRequest\x1a,.org.dash.platform.dapi.v0.GetStatusResponse\x12\x8a\x01\n\x15getCurrentQuorumsInfo\x12\x37.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest\x1a\x38.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse\x12\x93\x01\n\x18getIdentityTokenBalances\x12:.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse\x12\x99\x01\n\x1agetIdentitiesTokenBalances\x12<.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest\x1a=.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse\x12\x8a\x01\n\x15getIdentityTokenInfos\x12\x37.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse\x12\x90\x01\n\x17getIdentitiesTokenInfos\x12\x39.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest\x1a:.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse\x12{\n\x10getTokenStatuses\x12\x32.org.dash.platform.dapi.v0.GetTokenStatusesRequest\x1a\x33.org.dash.platform.dapi.v0.GetTokenStatusesResponse\x12\x9f\x01\n\x1cgetTokenDirectPurchasePrices\x12>.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest\x1a?.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse\x12\x87\x01\n\x14getTokenContractInfo\x12\x36.org.dash.platform.dapi.v0.GetTokenContractInfoRequest\x1a\x37.org.dash.platform.dapi.v0.GetTokenContractInfoResponse\x12\xb1\x01\n\"getTokenPreProgrammedDistributions\x12\x44.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest\x1a\x45.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse\x12\xbd\x01\n&getTokenPerpetualDistributionLastClaim\x12H.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest\x1aI.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse\x12\x84\x01\n\x13getTokenTotalSupply\x12\x35.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest\x1a\x36.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse\x12o\n\x0cgetGroupInfo\x12..org.dash.platform.dapi.v0.GetGroupInfoRequest\x1a/.org.dash.platform.dapi.v0.GetGroupInfoResponse\x12r\n\rgetGroupInfos\x12/.org.dash.platform.dapi.v0.GetGroupInfosRequest\x1a\x30.org.dash.platform.dapi.v0.GetGroupInfosResponse\x12x\n\x0fgetGroupActions\x12\x31.org.dash.platform.dapi.v0.GetGroupActionsRequest\x1a\x32.org.dash.platform.dapi.v0.GetGroupActionsResponse\x12\x8a\x01\n\x15getGroupActionSigners\x12\x37.org.dash.platform.dapi.v0.GetGroupActionSignersRequest\x1a\x38.org.dash.platform.dapi.v0.GetGroupActionSignersResponse\x12\x8c\x01\n\x17subscribePlatformEvents\x12\x36.org.dash.platform.dapi.v0.PlatformSubscriptionRequest\x1a\x37.org.dash.platform.dapi.v0.PlatformSubscriptionResponse0\x01\x62\x06proto3' + serialized_pb=b'\n\x0eplatform.proto\x12\x19org.dash.platform.dapi.v0\x1a\x1egoogle/protobuf/wrappers.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\xfd\x01\n\x1bPlatformSubscriptionRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.PlatformSubscriptionRequest.PlatformSubscriptionRequestV0H\x00\x1ao\n\x1dPlatformSubscriptionRequestV0\x12;\n\x06\x66ilter\x18\x01 \x01(\x0b\x32+.org.dash.platform.dapi.v0.PlatformFilterV0\x12\x11\n\tkeepalive\x18\x02 \x01(\rB\t\n\x07version\"\x85\x02\n\x1cPlatformSubscriptionResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0H\x00\x1at\n\x1ePlatformSubscriptionResponseV0\x12\x17\n\x0fsubscription_id\x18\x01 \x01(\x04\x12\x39\n\x05\x65vent\x18\x02 \x01(\x0b\x32*.org.dash.platform.dapi.v0.PlatformEventV0B\t\n\x07version\"\x83\x03\n\x10PlatformFilterV0\x12\x44\n\x03\x61ll\x18\x01 \x01(\x0b\x32\x35.org.dash.platform.dapi.v0.PlatformFilterV0.AllEventsH\x00\x12U\n\x0f\x62lock_committed\x18\x02 \x01(\x0b\x32:.org.dash.platform.dapi.v0.PlatformFilterV0.BlockCommittedH\x00\x12j\n\x17state_transition_result\x18\x03 \x01(\x0b\x32G.org.dash.platform.dapi.v0.PlatformFilterV0.StateTransitionResultFilterH\x00\x1a\x0b\n\tAllEvents\x1a\x10\n\x0e\x42lockCommitted\x1a?\n\x1bStateTransitionResultFilter\x12\x14\n\x07tx_hash\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\n\n\x08_tx_hashB\x06\n\x04kind\"\xe5\x04\n\x0fPlatformEventV0\x12T\n\x0f\x62lock_committed\x18\x01 \x01(\x0b\x32\x39.org.dash.platform.dapi.v0.PlatformEventV0.BlockCommittedH\x00\x12i\n\x1astate_transition_finalized\x18\x02 \x01(\x0b\x32\x43.org.dash.platform.dapi.v0.PlatformEventV0.StateTransitionFinalizedH\x00\x12I\n\tkeepalive\x18\x03 \x01(\x0b\x32\x34.org.dash.platform.dapi.v0.PlatformEventV0.KeepaliveH\x00\x1aO\n\rBlockMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x13\n\x07time_ms\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x15\n\rblock_id_hash\x18\x03 \x01(\x0c\x1aj\n\x0e\x42lockCommitted\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x10\n\x08tx_count\x18\x02 \x01(\r\x1as\n\x18StateTransitionFinalized\x12\x46\n\x04meta\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.PlatformEventV0.BlockMetadata\x12\x0f\n\x07tx_hash\x18\x02 \x01(\x0c\x1a\x0b\n\tKeepaliveB\x07\n\x05\x65vent\"\x81\x01\n\x05Proof\x12\x15\n\rgrovedb_proof\x18\x01 \x01(\x0c\x12\x13\n\x0bquorum_hash\x18\x02 \x01(\x0c\x12\x11\n\tsignature\x18\x03 \x01(\x0c\x12\r\n\x05round\x18\x04 \x01(\r\x12\x15\n\rblock_id_hash\x18\x05 \x01(\x0c\x12\x13\n\x0bquorum_type\x18\x06 \x01(\r\"\x98\x01\n\x10ResponseMetadata\x12\x12\n\x06height\x18\x01 \x01(\x04\x42\x02\x30\x01\x12 \n\x18\x63ore_chain_locked_height\x18\x02 \x01(\r\x12\r\n\x05\x65poch\x18\x03 \x01(\r\x12\x13\n\x07time_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x18\n\x10protocol_version\x18\x05 \x01(\r\x12\x10\n\x08\x63hain_id\x18\x06 \x01(\t\"L\n\x1dStateTransitionBroadcastError\x12\x0c\n\x04\x63ode\x18\x01 \x01(\r\x12\x0f\n\x07message\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\";\n\x1f\x42roadcastStateTransitionRequest\x12\x18\n\x10state_transition\x18\x01 \x01(\x0c\"\"\n BroadcastStateTransitionResponse\"\xa4\x01\n\x12GetIdentityRequest\x12P\n\x02v0\x18\x01 \x01(\x0b\x32\x42.org.dash.platform.dapi.v0.GetIdentityRequest.GetIdentityRequestV0H\x00\x1a\x31\n\x14GetIdentityRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xc1\x01\n\x17GetIdentityNonceRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityNonceRequest.GetIdentityNonceRequestV0H\x00\x1a?\n\x19GetIdentityNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xf6\x01\n\x1fGetIdentityContractNonceRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest.GetIdentityContractNonceRequestV0H\x00\x1a\\\n!GetIdentityContractNonceRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xc0\x01\n\x19GetIdentityBalanceRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetIdentityBalanceRequest.GetIdentityBalanceRequestV0H\x00\x1a\x38\n\x1bGetIdentityBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xec\x01\n$GetIdentityBalanceAndRevisionRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest.GetIdentityBalanceAndRevisionRequestV0H\x00\x1a\x43\n&GetIdentityBalanceAndRevisionRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9e\x02\n\x13GetIdentityResponse\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetIdentityResponse.GetIdentityResponseV0H\x00\x1a\xa7\x01\n\x15GetIdentityResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbc\x02\n\x18GetIdentityNonceResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetIdentityNonceResponse.GetIdentityNonceResponseV0H\x00\x1a\xb6\x01\n\x1aGetIdentityNonceResponseV0\x12\x1c\n\x0eidentity_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xe5\x02\n GetIdentityContractNonceResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse.GetIdentityContractNonceResponseV0H\x00\x1a\xc7\x01\n\"GetIdentityContractNonceResponseV0\x12%\n\x17identity_contract_nonce\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n\x1aGetIdentityBalanceResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetIdentityBalanceResponse.GetIdentityBalanceResponseV0H\x00\x1a\xb1\x01\n\x1cGetIdentityBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb1\x04\n%GetIdentityBalanceAndRevisionResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0H\x00\x1a\x84\x03\n\'GetIdentityBalanceAndRevisionResponseV0\x12\x9b\x01\n\x14\x62\x61lance_and_revision\x18\x01 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse.GetIdentityBalanceAndRevisionResponseV0.BalanceAndRevisionH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x12\x42\x61lanceAndRevision\x12\x13\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x14\n\x08revision\x18\x02 \x01(\x04\x42\x02\x30\x01\x42\x08\n\x06resultB\t\n\x07version\"\xd1\x01\n\x0eKeyRequestType\x12\x36\n\x08\x61ll_keys\x18\x01 \x01(\x0b\x32\".org.dash.platform.dapi.v0.AllKeysH\x00\x12@\n\rspecific_keys\x18\x02 \x01(\x0b\x32\'.org.dash.platform.dapi.v0.SpecificKeysH\x00\x12:\n\nsearch_key\x18\x03 \x01(\x0b\x32$.org.dash.platform.dapi.v0.SearchKeyH\x00\x42\t\n\x07request\"\t\n\x07\x41llKeys\"\x1f\n\x0cSpecificKeys\x12\x0f\n\x07key_ids\x18\x01 \x03(\r\"\xb6\x01\n\tSearchKey\x12I\n\x0bpurpose_map\x18\x01 \x03(\x0b\x32\x34.org.dash.platform.dapi.v0.SearchKey.PurposeMapEntry\x1a^\n\x0fPurposeMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12:\n\x05value\x18\x02 \x01(\x0b\x32+.org.dash.platform.dapi.v0.SecurityLevelMap:\x02\x38\x01\"\xbf\x02\n\x10SecurityLevelMap\x12]\n\x12security_level_map\x18\x01 \x03(\x0b\x32\x41.org.dash.platform.dapi.v0.SecurityLevelMap.SecurityLevelMapEntry\x1aw\n\x15SecurityLevelMapEntry\x12\x0b\n\x03key\x18\x01 \x01(\r\x12M\n\x05value\x18\x02 \x01(\x0e\x32>.org.dash.platform.dapi.v0.SecurityLevelMap.KeyKindRequestType:\x02\x38\x01\"S\n\x12KeyKindRequestType\x12\x1f\n\x1b\x43URRENT_KEY_OF_KIND_REQUEST\x10\x00\x12\x1c\n\x18\x41LL_KEYS_OF_KIND_REQUEST\x10\x01\"\xda\x02\n\x16GetIdentityKeysRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetIdentityKeysRequest.GetIdentityKeysRequestV0H\x00\x1a\xda\x01\n\x18GetIdentityKeysRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12?\n\x0crequest_type\x18\x02 \x01(\x0b\x32).org.dash.platform.dapi.v0.KeyRequestType\x12+\n\x05limit\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x04 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\x99\x03\n\x17GetIdentityKeysResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0H\x00\x1a\x96\x02\n\x19GetIdentityKeysResponseV0\x12\x61\n\x04keys\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetIdentityKeysResponse.GetIdentityKeysResponseV0.KeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1a\n\x04Keys\x12\x12\n\nkeys_bytes\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xef\x02\n GetIdentitiesContractKeysRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest.GetIdentitiesContractKeysRequestV0H\x00\x1a\xd1\x01\n\"GetIdentitiesContractKeysRequestV0\x12\x16\n\x0eidentities_ids\x18\x01 \x03(\x0c\x12\x13\n\x0b\x63ontract_id\x18\x02 \x01(\x0c\x12\x1f\n\x12\x64ocument_type_name\x18\x03 \x01(\tH\x00\x88\x01\x01\x12\x37\n\x08purposes\x18\x04 \x03(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x15\n\x13_document_type_nameB\t\n\x07version\"\xdf\x06\n!GetIdentitiesContractKeysResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0H\x00\x1a\xbe\x05\n#GetIdentitiesContractKeysResponseV0\x12\x8a\x01\n\x0fidentities_keys\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentitiesKeysH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aY\n\x0bPurposeKeys\x12\x36\n\x07purpose\x18\x01 \x01(\x0e\x32%.org.dash.platform.dapi.v0.KeyPurpose\x12\x12\n\nkeys_bytes\x18\x02 \x03(\x0c\x1a\x9f\x01\n\x0cIdentityKeys\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12z\n\x04keys\x18\x02 \x03(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.PurposeKeys\x1a\x90\x01\n\x0eIdentitiesKeys\x12~\n\x07\x65ntries\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse.GetIdentitiesContractKeysResponseV0.IdentityKeysB\x08\n\x06resultB\t\n\x07version\"\xa4\x02\n*GetEvonodesProposedEpochBlocksByIdsRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest.GetEvonodesProposedEpochBlocksByIdsRequestV0H\x00\x1ah\n,GetEvonodesProposedEpochBlocksByIdsRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x00\x88\x01\x01\x12\x0b\n\x03ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x08\n\x06_epochB\t\n\x07version\"\x92\x06\n&GetEvonodesProposedEpochBlocksResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0H\x00\x1a\xe2\x04\n(GetEvonodesProposedEpochBlocksResponseV0\x12\xb1\x01\n#evonodes_proposed_block_counts_info\x18\x01 \x01(\x0b\x32\x81\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodesProposedBlocksH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a?\n\x15\x45vonodeProposedBlocks\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x11\n\x05\x63ount\x18\x02 \x01(\x04\x42\x02\x30\x01\x1a\xc4\x01\n\x16\x45vonodesProposedBlocks\x12\xa9\x01\n\x1e\x65vonodes_proposed_block_counts\x18\x01 \x03(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse.GetEvonodesProposedEpochBlocksResponseV0.EvonodeProposedBlocksB\x08\n\x06resultB\t\n\x07version\"\xf2\x02\n,GetEvonodesProposedEpochBlocksByRangeRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest.GetEvonodesProposedEpochBlocksByRangeRequestV0H\x00\x1a\xaf\x01\n.GetEvonodesProposedEpochBlocksByRangeRequestV0\x12\x12\n\x05\x65poch\x18\x01 \x01(\rH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x02 \x01(\rH\x02\x88\x01\x01\x12\x15\n\x0bstart_after\x18\x03 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x04 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x07\n\x05startB\x08\n\x06_epochB\x08\n\x06_limitB\t\n\x07version\"\xcd\x01\n\x1cGetIdentitiesBalancesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest.GetIdentitiesBalancesRequestV0H\x00\x1a<\n\x1eGetIdentitiesBalancesRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9f\x05\n\x1dGetIdentitiesBalancesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0H\x00\x1a\x8a\x04\n\x1fGetIdentitiesBalancesResponseV0\x12\x8a\x01\n\x13identities_balances\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentitiesBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aL\n\x0fIdentityBalance\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x18\n\x07\x62\x61lance\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x8f\x01\n\x12IdentitiesBalances\x12y\n\x07\x65ntries\x18\x01 \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse.GetIdentitiesBalancesResponseV0.IdentityBalanceB\x08\n\x06resultB\t\n\x07version\"\xb4\x01\n\x16GetDataContractRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetDataContractRequest.GetDataContractRequestV0H\x00\x1a\x35\n\x18GetDataContractRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xb3\x02\n\x17GetDataContractResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractResponse.GetDataContractResponseV0H\x00\x1a\xb0\x01\n\x19GetDataContractResponseV0\x12\x17\n\rdata_contract\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xb9\x01\n\x17GetDataContractsRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetDataContractsRequest.GetDataContractsRequestV0H\x00\x1a\x37\n\x19GetDataContractsRequestV0\x12\x0b\n\x03ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xcf\x04\n\x18GetDataContractsResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetDataContractsResponse.GetDataContractsResponseV0H\x00\x1a[\n\x11\x44\x61taContractEntry\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x32\n\rdata_contract\x18\x02 \x01(\x0b\x32\x1b.google.protobuf.BytesValue\x1au\n\rDataContracts\x12\x64\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32\x45.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractEntry\x1a\xf5\x01\n\x1aGetDataContractsResponseV0\x12[\n\x0e\x64\x61ta_contracts\x18\x01 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetDataContractsResponse.DataContractsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc5\x02\n\x1dGetDataContractHistoryRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetDataContractHistoryRequest.GetDataContractHistoryRequestV0H\x00\x1a\xb0\x01\n\x1fGetDataContractHistoryRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0bstart_at_ms\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xb2\x05\n\x1eGetDataContractHistoryResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0H\x00\x1a\x9a\x04\n GetDataContractHistoryResponseV0\x12\x8f\x01\n\x15\x64\x61ta_contract_history\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a;\n\x18\x44\x61taContractHistoryEntry\x12\x10\n\x04\x64\x61te\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\r\n\x05value\x18\x02 \x01(\x0c\x1a\xaa\x01\n\x13\x44\x61taContractHistory\x12\x92\x01\n\x15\x64\x61ta_contract_entries\x18\x01 \x03(\x0b\x32s.org.dash.platform.dapi.v0.GetDataContractHistoryResponse.GetDataContractHistoryResponseV0.DataContractHistoryEntryB\x08\n\x06resultB\t\n\x07version\"\xb2\x02\n\x13GetDocumentsRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetDocumentsRequest.GetDocumentsRequestV0H\x00\x1a\xbb\x01\n\x15GetDocumentsRequestV0\x12\x18\n\x10\x64\x61ta_contract_id\x18\x01 \x01(\x0c\x12\x15\n\rdocument_type\x18\x02 \x01(\t\x12\r\n\x05where\x18\x03 \x01(\x0c\x12\x10\n\x08order_by\x18\x04 \x01(\x0c\x12\r\n\x05limit\x18\x05 \x01(\r\x12\x15\n\x0bstart_after\x18\x06 \x01(\x0cH\x00\x12\x12\n\x08start_at\x18\x07 \x01(\x0cH\x00\x12\r\n\x05prove\x18\x08 \x01(\x08\x42\x07\n\x05startB\t\n\x07version\"\x95\x03\n\x14GetDocumentsResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0H\x00\x1a\x9b\x02\n\x16GetDocumentsResponseV0\x12\x65\n\tdocuments\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetDocumentsResponse.GetDocumentsResponseV0.DocumentsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1e\n\tDocuments\x12\x11\n\tdocuments\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xed\x01\n!GetIdentityByPublicKeyHashRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest.GetIdentityByPublicKeyHashRequestV0H\x00\x1aM\n#GetIdentityByPublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xda\x02\n\"GetIdentityByPublicKeyHashResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse.GetIdentityByPublicKeyHashResponseV0H\x00\x1a\xb6\x01\n$GetIdentityByPublicKeyHashResponseV0\x12\x12\n\x08identity\x18\x01 \x01(\x0cH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xbd\x02\n*GetIdentityByNonUniquePublicKeyHashRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest.GetIdentityByNonUniquePublicKeyHashRequestV0H\x00\x1a\x80\x01\n,GetIdentityByNonUniquePublicKeyHashRequestV0\x12\x17\n\x0fpublic_key_hash\x18\x01 \x01(\x0c\x12\x18\n\x0bstart_after\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\x0e\n\x0c_start_afterB\t\n\x07version\"\xd6\x06\n+GetIdentityByNonUniquePublicKeyHashResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0H\x00\x1a\x96\x05\n-GetIdentityByNonUniquePublicKeyHashResponseV0\x12\x9a\x01\n\x08identity\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityResponseH\x00\x12\x9d\x01\n\x05proof\x18\x02 \x01(\x0b\x32\x8b\x01.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse.GetIdentityByNonUniquePublicKeyHashResponseV0.IdentityProvedResponseH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x36\n\x10IdentityResponse\x12\x15\n\x08identity\x18\x01 \x01(\x0cH\x00\x88\x01\x01\x42\x0b\n\t_identity\x1a\xa6\x01\n\x16IdentityProvedResponse\x12P\n&grovedb_identity_public_key_hash_proof\x18\x01 \x01(\x0b\x32 .org.dash.platform.dapi.v0.Proof\x12!\n\x14identity_proof_bytes\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x17\n\x15_identity_proof_bytesB\x08\n\x06resultB\t\n\x07version\"\xfb\x01\n#WaitForStateTransitionResultRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest.WaitForStateTransitionResultRequestV0H\x00\x1aU\n%WaitForStateTransitionResultRequestV0\x12\x1d\n\x15state_transition_hash\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x99\x03\n$WaitForStateTransitionResultResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse.WaitForStateTransitionResultResponseV0H\x00\x1a\xef\x01\n&WaitForStateTransitionResultResponseV0\x12I\n\x05\x65rror\x18\x01 \x01(\x0b\x32\x38.org.dash.platform.dapi.v0.StateTransitionBroadcastErrorH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x19GetConsensusParamsRequest\x12^\n\x02v0\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetConsensusParamsRequest.GetConsensusParamsRequestV0H\x00\x1a<\n\x1bGetConsensusParamsRequestV0\x12\x0e\n\x06height\x18\x01 \x01(\x05\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x9c\x04\n\x1aGetConsensusParamsResponse\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetConsensusParamsResponse.GetConsensusParamsResponseV0H\x00\x1aP\n\x14\x43onsensusParamsBlock\x12\x11\n\tmax_bytes\x18\x01 \x01(\t\x12\x0f\n\x07max_gas\x18\x02 \x01(\t\x12\x14\n\x0ctime_iota_ms\x18\x03 \x01(\t\x1a\x62\n\x17\x43onsensusParamsEvidence\x12\x1a\n\x12max_age_num_blocks\x18\x01 \x01(\t\x12\x18\n\x10max_age_duration\x18\x02 \x01(\t\x12\x11\n\tmax_bytes\x18\x03 \x01(\t\x1a\xda\x01\n\x1cGetConsensusParamsResponseV0\x12Y\n\x05\x62lock\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsBlock\x12_\n\x08\x65vidence\x18\x02 \x01(\x0b\x32M.org.dash.platform.dapi.v0.GetConsensusParamsResponse.ConsensusParamsEvidenceB\t\n\x07version\"\xe4\x01\n%GetProtocolVersionUpgradeStateRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest.GetProtocolVersionUpgradeStateRequestV0H\x00\x1a\x38\n\'GetProtocolVersionUpgradeStateRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xb5\x05\n&GetProtocolVersionUpgradeStateResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0H\x00\x1a\x85\x04\n(GetProtocolVersionUpgradeStateResponseV0\x12\x87\x01\n\x08versions\x18\x01 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x96\x01\n\x08Versions\x12\x89\x01\n\x08versions\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse.GetProtocolVersionUpgradeStateResponseV0.VersionEntry\x1a:\n\x0cVersionEntry\x12\x16\n\x0eversion_number\x18\x01 \x01(\r\x12\x12\n\nvote_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xa3\x02\n*GetProtocolVersionUpgradeVoteStatusRequest\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest.GetProtocolVersionUpgradeVoteStatusRequestV0H\x00\x1ag\n,GetProtocolVersionUpgradeVoteStatusRequestV0\x12\x19\n\x11start_pro_tx_hash\x18\x01 \x01(\x0c\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xef\x05\n+GetProtocolVersionUpgradeVoteStatusResponse\x12\x82\x01\n\x02v0\x18\x01 \x01(\x0b\x32t.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0H\x00\x1a\xaf\x04\n-GetProtocolVersionUpgradeVoteStatusResponseV0\x12\x98\x01\n\x08versions\x18\x01 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignalsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xaf\x01\n\x0eVersionSignals\x12\x9c\x01\n\x0fversion_signals\x18\x01 \x03(\x0b\x32\x82\x01.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse.GetProtocolVersionUpgradeVoteStatusResponseV0.VersionSignal\x1a\x35\n\rVersionSignal\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07version\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xf5\x01\n\x14GetEpochsInfoRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetEpochsInfoRequest.GetEpochsInfoRequestV0H\x00\x1a|\n\x16GetEpochsInfoRequestV0\x12\x31\n\x0bstart_epoch\x18\x01 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\r\n\x05\x63ount\x18\x02 \x01(\r\x12\x11\n\tascending\x18\x03 \x01(\x08\x12\r\n\x05prove\x18\x04 \x01(\x08\x42\t\n\x07version\"\x99\x05\n\x15GetEpochsInfoResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0H\x00\x1a\x9c\x04\n\x17GetEpochsInfoResponseV0\x12\x65\n\x06\x65pochs\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1au\n\nEpochInfos\x12g\n\x0b\x65poch_infos\x18\x01 \x03(\x0b\x32R.org.dash.platform.dapi.v0.GetEpochsInfoResponse.GetEpochsInfoResponseV0.EpochInfo\x1a\xa6\x01\n\tEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x16\n\nstart_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xbf\x02\n\x1dGetFinalizedEpochInfosRequest\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest.GetFinalizedEpochInfosRequestV0H\x00\x1a\xaa\x01\n\x1fGetFinalizedEpochInfosRequestV0\x12\x19\n\x11start_epoch_index\x18\x01 \x01(\r\x12\"\n\x1astart_epoch_index_included\x18\x02 \x01(\x08\x12\x17\n\x0f\x65nd_epoch_index\x18\x03 \x01(\r\x12 \n\x18\x65nd_epoch_index_included\x18\x04 \x01(\x08\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\t\n\x07version\"\xbd\t\n\x1eGetFinalizedEpochInfosResponse\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0H\x00\x1a\xa5\x08\n GetFinalizedEpochInfosResponseV0\x12\x80\x01\n\x06\x65pochs\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xa4\x01\n\x13\x46inalizedEpochInfos\x12\x8c\x01\n\x15\x66inalized_epoch_infos\x18\x01 \x03(\x0b\x32m.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.FinalizedEpochInfo\x1a\x9f\x04\n\x12\x46inalizedEpochInfo\x12\x0e\n\x06number\x18\x01 \x01(\r\x12\x1e\n\x12\x66irst_block_height\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x1f\n\x17\x66irst_core_block_height\x18\x03 \x01(\r\x12\x1c\n\x10\x66irst_block_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x0e\x66\x65\x65_multiplier\x18\x05 \x01(\x01\x12\x18\n\x10protocol_version\x18\x06 \x01(\r\x12!\n\x15total_blocks_in_epoch\x18\x07 \x01(\x04\x42\x02\x30\x01\x12*\n\"next_epoch_start_core_block_height\x18\x08 \x01(\r\x12!\n\x15total_processing_fees\x18\t \x01(\x04\x42\x02\x30\x01\x12*\n\x1etotal_distributed_storage_fees\x18\n \x01(\x04\x42\x02\x30\x01\x12&\n\x1atotal_created_storage_fees\x18\x0b \x01(\x04\x42\x02\x30\x01\x12\x1e\n\x12\x63ore_block_rewards\x18\x0c \x01(\x04\x42\x02\x30\x01\x12\x81\x01\n\x0f\x62lock_proposers\x18\r \x03(\x0b\x32h.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse.GetFinalizedEpochInfosResponseV0.BlockProposer\x1a\x39\n\rBlockProposer\x12\x13\n\x0bproposer_id\x18\x01 \x01(\x0c\x12\x13\n\x0b\x62lock_count\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xde\x04\n\x1cGetContestedResourcesRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0H\x00\x1a\xcc\x03\n\x1eGetContestedResourcesRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x1a\n\x12start_index_values\x18\x04 \x03(\x0c\x12\x18\n\x10\x65nd_index_values\x18\x05 \x03(\x0c\x12\x89\x01\n\x13start_at_value_info\x18\x06 \x01(\x0b\x32g.org.dash.platform.dapi.v0.GetContestedResourcesRequest.GetContestedResourcesRequestV0.StartAtValueInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1a\x45\n\x10StartAtValueInfo\x12\x13\n\x0bstart_value\x18\x01 \x01(\x0c\x12\x1c\n\x14start_value_included\x18\x02 \x01(\x08\x42\x16\n\x14_start_at_value_infoB\x08\n\x06_countB\t\n\x07version\"\x88\x04\n\x1dGetContestedResourcesResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0H\x00\x1a\xf3\x02\n\x1fGetContestedResourcesResponseV0\x12\x95\x01\n\x19\x63ontested_resource_values\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourcesResponse.GetContestedResourcesResponseV0.ContestedResourceValuesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a<\n\x17\x43ontestedResourceValues\x12!\n\x19\x63ontested_resource_values\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x05\n\x1cGetVotePollsByEndDateRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0H\x00\x1a\xc0\x04\n\x1eGetVotePollsByEndDateRequestV0\x12\x84\x01\n\x0fstart_time_info\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.StartAtTimeInfoH\x00\x88\x01\x01\x12\x80\x01\n\rend_time_info\x18\x02 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest.GetVotePollsByEndDateRequestV0.EndAtTimeInfoH\x01\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x02\x88\x01\x01\x12\x13\n\x06offset\x18\x04 \x01(\rH\x03\x88\x01\x01\x12\x11\n\tascending\x18\x05 \x01(\x08\x12\r\n\x05prove\x18\x06 \x01(\x08\x1aI\n\x0fStartAtTimeInfo\x12\x19\n\rstart_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13start_time_included\x18\x02 \x01(\x08\x1a\x43\n\rEndAtTimeInfo\x12\x17\n\x0b\x65nd_time_ms\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x65nd_time_included\x18\x02 \x01(\x08\x42\x12\n\x10_start_time_infoB\x10\n\x0e_end_time_infoB\x08\n\x06_limitB\t\n\x07_offsetB\t\n\x07version\"\x83\x06\n\x1dGetVotePollsByEndDateResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0H\x00\x1a\xee\x04\n\x1fGetVotePollsByEndDateResponseV0\x12\x9c\x01\n\x18vote_polls_by_timestamps\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestampsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aV\n\x1eSerializedVotePollsByTimestamp\x12\x15\n\ttimestamp\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x15serialized_vote_polls\x18\x02 \x03(\x0c\x1a\xd7\x01\n\x1fSerializedVotePollsByTimestamps\x12\x99\x01\n\x18vote_polls_by_timestamps\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse.GetVotePollsByEndDateResponseV0.SerializedVotePollsByTimestamp\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xff\x06\n$GetContestedResourceVoteStateRequest\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0H\x00\x1a\xd5\x05\n&GetContestedResourceVoteStateRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x86\x01\n\x0bresult_type\x18\x05 \x01(\x0e\x32q.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.ResultType\x12\x36\n.allow_include_locked_and_abstaining_vote_tally\x18\x06 \x01(\x08\x12\xa3\x01\n\x18start_at_identifier_info\x18\x07 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest.GetContestedResourceVoteStateRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x08 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\"I\n\nResultType\x12\r\n\tDOCUMENTS\x10\x00\x12\x0e\n\nVOTE_TALLY\x10\x01\x12\x1c\n\x18\x44OCUMENTS_AND_VOTE_TALLY\x10\x02\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\x94\x0c\n%GetContestedResourceVoteStateResponse\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0H\x00\x1a\xe7\n\n\'GetContestedResourceVoteStateResponseV0\x12\xae\x01\n\x1d\x63ontested_resource_contenders\x18\x01 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.ContestedResourceContendersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xda\x03\n\x10\x46inishedVoteInfo\x12\xad\x01\n\x15\x66inished_vote_outcome\x18\x01 \x01(\x0e\x32\x8d\x01.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfo.FinishedVoteOutcome\x12\x1f\n\x12won_by_identity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12$\n\x18\x66inished_at_block_height\x18\x03 \x01(\x04\x42\x02\x30\x01\x12%\n\x1d\x66inished_at_core_block_height\x18\x04 \x01(\r\x12%\n\x19\x66inished_at_block_time_ms\x18\x05 \x01(\x04\x42\x02\x30\x01\x12\x19\n\x11\x66inished_at_epoch\x18\x06 \x01(\r\"O\n\x13\x46inishedVoteOutcome\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\n\n\x06LOCKED\x10\x01\x12\x16\n\x12NO_PREVIOUS_WINNER\x10\x02\x42\x15\n\x13_won_by_identity_id\x1a\xc4\x03\n\x1b\x43ontestedResourceContenders\x12\x86\x01\n\ncontenders\x18\x01 \x03(\x0b\x32r.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.Contender\x12\x1f\n\x12\x61\x62stain_vote_tally\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x1c\n\x0flock_vote_tally\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\x9a\x01\n\x12\x66inished_vote_info\x18\x04 \x01(\x0b\x32y.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse.GetContestedResourceVoteStateResponseV0.FinishedVoteInfoH\x02\x88\x01\x01\x42\x15\n\x13_abstain_vote_tallyB\x12\n\x10_lock_vote_tallyB\x15\n\x13_finished_vote_info\x1ak\n\tContender\x12\x12\n\nidentifier\x18\x01 \x01(\x0c\x12\x17\n\nvote_count\x18\x02 \x01(\rH\x00\x88\x01\x01\x12\x15\n\x08\x64ocument\x18\x03 \x01(\x0cH\x01\x88\x01\x01\x42\r\n\x0b_vote_countB\x0b\n\t_documentB\x08\n\x06resultB\t\n\x07version\"\xd5\x05\n,GetContestedResourceVotersForIdentityRequest\x12\x84\x01\n\x02v0\x18\x01 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0H\x00\x1a\x92\x04\n.GetContestedResourceVotersForIdentityRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\x12\n\nindex_name\x18\x03 \x01(\t\x12\x14\n\x0cindex_values\x18\x04 \x03(\x0c\x12\x15\n\rcontestant_id\x18\x05 \x01(\x0c\x12\xb4\x01\n\x18start_at_identifier_info\x18\x06 \x01(\x0b\x32\x8c\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest.GetContestedResourceVotersForIdentityRequestV0.StartAtIdentifierInfoH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x07 \x01(\rH\x01\x88\x01\x01\x12\x17\n\x0forder_ascending\x18\x08 \x01(\x08\x12\r\n\x05prove\x18\t \x01(\x08\x1aT\n\x15StartAtIdentifierInfo\x12\x18\n\x10start_identifier\x18\x01 \x01(\x0c\x12!\n\x19start_identifier_included\x18\x02 \x01(\x08\x42\x1b\n\x19_start_at_identifier_infoB\x08\n\x06_countB\t\n\x07version\"\xf1\x04\n-GetContestedResourceVotersForIdentityResponse\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0H\x00\x1a\xab\x03\n/GetContestedResourceVotersForIdentityResponseV0\x12\xb6\x01\n\x19\x63ontested_resource_voters\x18\x01 \x01(\x0b\x32\x90\x01.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse.GetContestedResourceVotersForIdentityResponseV0.ContestedResourceVotersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x43\n\x17\x43ontestedResourceVoters\x12\x0e\n\x06voters\x18\x01 \x03(\x0c\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x42\x08\n\x06resultB\t\n\x07version\"\xad\x05\n(GetContestedResourceIdentityVotesRequest\x12|\n\x02v0\x18\x01 \x01(\x0b\x32n.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0H\x00\x1a\xf7\x03\n*GetContestedResourceIdentityVotesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12+\n\x05limit\x18\x02 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12,\n\x06offset\x18\x03 \x01(\x0b\x32\x1c.google.protobuf.UInt32Value\x12\x17\n\x0forder_ascending\x18\x04 \x01(\x08\x12\xae\x01\n\x1astart_at_vote_poll_id_info\x18\x05 \x01(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest.GetContestedResourceIdentityVotesRequestV0.StartAtVotePollIdInfoH\x00\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x1a\x61\n\x15StartAtVotePollIdInfo\x12 \n\x18start_at_poll_identifier\x18\x01 \x01(\x0c\x12&\n\x1estart_poll_identifier_included\x18\x02 \x01(\x08\x42\x1d\n\x1b_start_at_vote_poll_id_infoB\t\n\x07version\"\xc8\n\n)GetContestedResourceIdentityVotesResponse\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0H\x00\x1a\x8f\t\n+GetContestedResourceIdentityVotesResponseV0\x12\xa1\x01\n\x05votes\x18\x01 \x01(\x0b\x32\x8f\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVotesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\xf7\x01\n\x1e\x43ontestedResourceIdentityVotes\x12\xba\x01\n!contested_resource_identity_votes\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ContestedResourceIdentityVote\x12\x18\n\x10\x66inished_results\x18\x02 \x01(\x08\x1a\xad\x02\n\x12ResourceVoteChoice\x12\xad\x01\n\x10vote_choice_type\x18\x01 \x01(\x0e\x32\x92\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoice.VoteChoiceType\x12\x18\n\x0bidentity_id\x18\x02 \x01(\x0cH\x00\x88\x01\x01\"=\n\x0eVoteChoiceType\x12\x14\n\x10TOWARDS_IDENTITY\x10\x00\x12\x0b\n\x07\x41\x42STAIN\x10\x01\x12\x08\n\x04LOCK\x10\x02\x42\x0e\n\x0c_identity_id\x1a\x95\x02\n\x1d\x43ontestedResourceIdentityVote\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1a\n\x12\x64ocument_type_name\x18\x02 \x01(\t\x12\'\n\x1fserialized_index_storage_values\x18\x03 \x03(\x0c\x12\x99\x01\n\x0bvote_choice\x18\x04 \x01(\x0b\x32\x83\x01.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse.GetContestedResourceIdentityVotesResponseV0.ResourceVoteChoiceB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n%GetPrefundedSpecializedBalanceRequest\x12v\n\x02v0\x18\x01 \x01(\x0b\x32h.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest.GetPrefundedSpecializedBalanceRequestV0H\x00\x1a\x44\n\'GetPrefundedSpecializedBalanceRequestV0\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xed\x02\n&GetPrefundedSpecializedBalanceResponse\x12x\n\x02v0\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse.GetPrefundedSpecializedBalanceResponseV0H\x00\x1a\xbd\x01\n(GetPrefundedSpecializedBalanceResponseV0\x12\x15\n\x07\x62\x61lance\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xd0\x01\n GetTotalCreditsInPlatformRequest\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest.GetTotalCreditsInPlatformRequestV0H\x00\x1a\x33\n\"GetTotalCreditsInPlatformRequestV0\x12\r\n\x05prove\x18\x01 \x01(\x08\x42\t\n\x07version\"\xd9\x02\n!GetTotalCreditsInPlatformResponse\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse.GetTotalCreditsInPlatformResponseV0H\x00\x1a\xb8\x01\n#GetTotalCreditsInPlatformResponseV0\x12\x15\n\x07\x63redits\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\x08\n\x06resultB\t\n\x07version\"\xc4\x01\n\x16GetPathElementsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetPathElementsRequest.GetPathElementsRequestV0H\x00\x1a\x45\n\x18GetPathElementsRequestV0\x12\x0c\n\x04path\x18\x01 \x03(\x0c\x12\x0c\n\x04keys\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xa3\x03\n\x17GetPathElementsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0H\x00\x1a\xa0\x02\n\x19GetPathElementsResponseV0\x12i\n\x08\x65lements\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetPathElementsResponse.GetPathElementsResponseV0.ElementsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x1c\n\x08\x45lements\x12\x10\n\x08\x65lements\x18\x01 \x03(\x0c\x42\x08\n\x06resultB\t\n\x07version\"\x81\x01\n\x10GetStatusRequest\x12L\n\x02v0\x18\x01 \x01(\x0b\x32>.org.dash.platform.dapi.v0.GetStatusRequest.GetStatusRequestV0H\x00\x1a\x14\n\x12GetStatusRequestV0B\t\n\x07version\"\xe4\x10\n\x11GetStatusResponse\x12N\n\x02v0\x18\x01 \x01(\x0b\x32@.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0H\x00\x1a\xf3\x0f\n\x13GetStatusResponseV0\x12Y\n\x07version\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version\x12S\n\x04node\x18\x02 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Node\x12U\n\x05\x63hain\x18\x03 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Chain\x12Y\n\x07network\x18\x04 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Network\x12^\n\nstate_sync\x18\x05 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.StateSync\x12S\n\x04time\x18\x06 \x01(\x0b\x32\x45.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Time\x1a\x82\x05\n\x07Version\x12\x63\n\x08software\x18\x01 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Software\x12\x63\n\x08protocol\x18\x02 \x01(\x0b\x32Q.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol\x1a^\n\x08Software\x12\x0c\n\x04\x64\x61pi\x18\x01 \x01(\t\x12\x12\n\x05\x64rive\x18\x02 \x01(\tH\x00\x88\x01\x01\x12\x17\n\ntenderdash\x18\x03 \x01(\tH\x01\x88\x01\x01\x42\x08\n\x06_driveB\r\n\x0b_tenderdash\x1a\xcc\x02\n\x08Protocol\x12p\n\ntenderdash\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Tenderdash\x12\x66\n\x05\x64rive\x18\x02 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetStatusResponse.GetStatusResponseV0.Version.Protocol.Drive\x1a(\n\nTenderdash\x12\x0b\n\x03p2p\x18\x01 \x01(\r\x12\r\n\x05\x62lock\x18\x02 \x01(\r\x1a<\n\x05\x44rive\x12\x0e\n\x06latest\x18\x03 \x01(\r\x12\x0f\n\x07\x63urrent\x18\x04 \x01(\r\x12\x12\n\nnext_epoch\x18\x05 \x01(\r\x1a\x7f\n\x04Time\x12\x11\n\x05local\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x16\n\x05\x62lock\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x88\x01\x01\x12\x18\n\x07genesis\x18\x03 \x01(\x04\x42\x02\x30\x01H\x01\x88\x01\x01\x12\x12\n\x05\x65poch\x18\x04 \x01(\rH\x02\x88\x01\x01\x42\x08\n\x06_blockB\n\n\x08_genesisB\x08\n\x06_epoch\x1a<\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\x0c\x12\x18\n\x0bpro_tx_hash\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x42\x0e\n\x0c_pro_tx_hash\x1a\xb3\x02\n\x05\x43hain\x12\x13\n\x0b\x63\x61tching_up\x18\x01 \x01(\x08\x12\x19\n\x11latest_block_hash\x18\x02 \x01(\x0c\x12\x17\n\x0flatest_app_hash\x18\x03 \x01(\x0c\x12\x1f\n\x13latest_block_height\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x13\x65\x61rliest_block_hash\x18\x05 \x01(\x0c\x12\x19\n\x11\x65\x61rliest_app_hash\x18\x06 \x01(\x0c\x12!\n\x15\x65\x61rliest_block_height\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15max_peer_block_height\x18\t \x01(\x04\x42\x02\x30\x01\x12%\n\x18\x63ore_chain_locked_height\x18\n \x01(\rH\x00\x88\x01\x01\x42\x1b\n\x19_core_chain_locked_height\x1a\x43\n\x07Network\x12\x10\n\x08\x63hain_id\x18\x01 \x01(\t\x12\x13\n\x0bpeers_count\x18\x02 \x01(\r\x12\x11\n\tlistening\x18\x03 \x01(\x08\x1a\x85\x02\n\tStateSync\x12\x1d\n\x11total_synced_time\x18\x01 \x01(\x04\x42\x02\x30\x01\x12\x1a\n\x0eremaining_time\x18\x02 \x01(\x04\x42\x02\x30\x01\x12\x17\n\x0ftotal_snapshots\x18\x03 \x01(\r\x12\"\n\x16\x63hunk_process_avg_time\x18\x04 \x01(\x04\x42\x02\x30\x01\x12\x1b\n\x0fsnapshot_height\x18\x05 \x01(\x04\x42\x02\x30\x01\x12!\n\x15snapshot_chunks_count\x18\x06 \x01(\x04\x42\x02\x30\x01\x12\x1d\n\x11\x62\x61\x63kfilled_blocks\x18\x07 \x01(\x04\x42\x02\x30\x01\x12!\n\x15\x62\x61\x63kfill_blocks_total\x18\x08 \x01(\x04\x42\x02\x30\x01\x42\t\n\x07version\"\xb1\x01\n\x1cGetCurrentQuorumsInfoRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest.GetCurrentQuorumsInfoRequestV0H\x00\x1a \n\x1eGetCurrentQuorumsInfoRequestV0B\t\n\x07version\"\xa1\x05\n\x1dGetCurrentQuorumsInfoResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.GetCurrentQuorumsInfoResponseV0H\x00\x1a\x46\n\x0bValidatorV0\x12\x13\n\x0bpro_tx_hash\x18\x01 \x01(\x0c\x12\x0f\n\x07node_ip\x18\x02 \x01(\t\x12\x11\n\tis_banned\x18\x03 \x01(\x08\x1a\xaf\x01\n\x0eValidatorSetV0\x12\x13\n\x0bquorum_hash\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ore_height\x18\x02 \x01(\r\x12U\n\x07members\x18\x03 \x03(\x0b\x32\x44.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorV0\x12\x1c\n\x14threshold_public_key\x18\x04 \x01(\x0c\x1a\x92\x02\n\x1fGetCurrentQuorumsInfoResponseV0\x12\x15\n\rquorum_hashes\x18\x01 \x03(\x0c\x12\x1b\n\x13\x63urrent_quorum_hash\x18\x02 \x01(\x0c\x12_\n\x0evalidator_sets\x18\x03 \x03(\x0b\x32G.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse.ValidatorSetV0\x12\x1b\n\x13last_block_proposer\x18\x04 \x01(\x0c\x12=\n\x08metadata\x18\x05 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadataB\t\n\x07version\"\xf4\x01\n\x1fGetIdentityTokenBalancesRequest\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest.GetIdentityTokenBalancesRequestV0H\x00\x1aZ\n!GetIdentityTokenBalancesRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xad\x05\n GetIdentityTokenBalancesResponse\x12l\n\x02v0\x18\x01 \x01(\x0b\x32^.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0H\x00\x1a\x8f\x04\n\"GetIdentityTokenBalancesResponseV0\x12\x86\x01\n\x0etoken_balances\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aG\n\x11TokenBalanceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\x9a\x01\n\rTokenBalances\x12\x88\x01\n\x0etoken_balances\x18\x01 \x03(\x0b\x32p.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse.GetIdentityTokenBalancesResponseV0.TokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xfc\x01\n!GetIdentitiesTokenBalancesRequest\x12n\n\x02v0\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest.GetIdentitiesTokenBalancesRequestV0H\x00\x1a\\\n#GetIdentitiesTokenBalancesRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xf2\x05\n\"GetIdentitiesTokenBalancesResponse\x12p\n\x02v0\x18\x01 \x01(\x0b\x32\x62.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0H\x00\x1a\xce\x04\n$GetIdentitiesTokenBalancesResponseV0\x12\x9b\x01\n\x17identity_token_balances\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalancesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aR\n\x19IdentityTokenBalanceEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x14\n\x07\x62\x61lance\x18\x02 \x01(\x04H\x00\x88\x01\x01\x42\n\n\x08_balance\x1a\xb7\x01\n\x15IdentityTokenBalances\x12\x9d\x01\n\x17identity_token_balances\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse.GetIdentitiesTokenBalancesResponseV0.IdentityTokenBalanceEntryB\x08\n\x06resultB\t\n\x07version\"\xe8\x01\n\x1cGetIdentityTokenInfosRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest.GetIdentityTokenInfosRequestV0H\x00\x1aW\n\x1eGetIdentityTokenInfosRequestV0\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x11\n\ttoken_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\x98\x06\n\x1dGetIdentityTokenInfosResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0H\x00\x1a\x83\x05\n\x1fGetIdentityTokenInfosResponseV0\x12z\n\x0btoken_infos\x18\x01 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb0\x01\n\x0eTokenInfoEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x82\x01\n\x04info\x18\x02 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x8a\x01\n\nTokenInfos\x12|\n\x0btoken_infos\x18\x01 \x03(\x0b\x32g.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse.GetIdentityTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xf0\x01\n\x1eGetIdentitiesTokenInfosRequest\x12h\n\x02v0\x18\x01 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest.GetIdentitiesTokenInfosRequestV0H\x00\x1aY\n GetIdentitiesTokenInfosRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x14\n\x0cidentity_ids\x18\x02 \x03(\x0c\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xca\x06\n\x1fGetIdentitiesTokenInfosResponse\x12j\n\x02v0\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0H\x00\x1a\xaf\x05\n!GetIdentitiesTokenInfosResponseV0\x12\x8f\x01\n\x14identity_token_infos\x18\x01 \x01(\x0b\x32o.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.IdentityTokenInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a(\n\x16TokenIdentityInfoEntry\x12\x0e\n\x06\x66rozen\x18\x01 \x01(\x08\x1a\xb7\x01\n\x0eTokenInfoEntry\x12\x13\n\x0bidentity_id\x18\x01 \x01(\x0c\x12\x86\x01\n\x04info\x18\x02 \x01(\x0b\x32s.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenIdentityInfoEntryH\x00\x88\x01\x01\x42\x07\n\x05_info\x1a\x97\x01\n\x12IdentityTokenInfos\x12\x80\x01\n\x0btoken_infos\x18\x01 \x03(\x0b\x32k.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse.GetIdentitiesTokenInfosResponseV0.TokenInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbf\x01\n\x17GetTokenStatusesRequest\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetTokenStatusesRequest.GetTokenStatusesRequestV0H\x00\x1a=\n\x19GetTokenStatusesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xe7\x04\n\x18GetTokenStatusesResponse\x12\\\n\x02v0\x18\x01 \x01(\x0b\x32N.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0H\x00\x1a\xe1\x03\n\x1aGetTokenStatusesResponseV0\x12v\n\x0etoken_statuses\x18\x01 \x01(\x0b\x32\\.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x44\n\x10TokenStatusEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x13\n\x06paused\x18\x02 \x01(\x08H\x00\x88\x01\x01\x42\t\n\x07_paused\x1a\x88\x01\n\rTokenStatuses\x12w\n\x0etoken_statuses\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetTokenStatusesResponse.GetTokenStatusesResponseV0.TokenStatusEntryB\x08\n\x06resultB\t\n\x07version\"\xef\x01\n#GetTokenDirectPurchasePricesRequest\x12r\n\x02v0\x18\x01 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest.GetTokenDirectPurchasePricesRequestV0H\x00\x1aI\n%GetTokenDirectPurchasePricesRequestV0\x12\x11\n\ttoken_ids\x18\x01 \x03(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\x8b\t\n$GetTokenDirectPurchasePricesResponse\x12t\n\x02v0\x18\x01 \x01(\x0b\x32\x66.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0H\x00\x1a\xe1\x07\n&GetTokenDirectPurchasePricesResponseV0\x12\xa9\x01\n\x1ctoken_direct_purchase_prices\x18\x01 \x01(\x0b\x32\x80\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePricesH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xa7\x01\n\x0fPricingSchedule\x12\x93\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32w.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PriceForQuantity\x1a\xe4\x01\n\x1dTokenDirectPurchasePriceEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x15\n\x0b\x66ixed_price\x18\x02 \x01(\x04H\x00\x12\x90\x01\n\x0evariable_price\x18\x03 \x01(\x0b\x32v.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.PricingScheduleH\x00\x42\x07\n\x05price\x1a\xc8\x01\n\x19TokenDirectPurchasePrices\x12\xaa\x01\n\x1btoken_direct_purchase_price\x18\x01 \x03(\x0b\x32\x84\x01.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse.GetTokenDirectPurchasePricesResponseV0.TokenDirectPurchasePriceEntryB\x08\n\x06resultB\t\n\x07version\"\xce\x01\n\x1bGetTokenContractInfoRequest\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenContractInfoRequest.GetTokenContractInfoRequestV0H\x00\x1a@\n\x1dGetTokenContractInfoRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xfb\x03\n\x1cGetTokenContractInfoResponse\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0H\x00\x1a\xe9\x02\n\x1eGetTokenContractInfoResponseV0\x12|\n\x04\x64\x61ta\x18\x01 \x01(\x0b\x32l.org.dash.platform.dapi.v0.GetTokenContractInfoResponse.GetTokenContractInfoResponseV0.TokenContractInfoDataH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1aM\n\x15TokenContractInfoData\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\rB\x08\n\x06resultB\t\n\x07version\"\xef\x04\n)GetTokenPreProgrammedDistributionsRequest\x12~\n\x02v0\x18\x01 \x01(\x0b\x32p.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0H\x00\x1a\xb6\x03\n+GetTokenPreProgrammedDistributionsRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x98\x01\n\rstart_at_info\x18\x02 \x01(\x0b\x32|.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest.GetTokenPreProgrammedDistributionsRequestV0.StartAtInfoH\x00\x88\x01\x01\x12\x12\n\x05limit\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x1a\x9a\x01\n\x0bStartAtInfo\x12\x15\n\rstart_time_ms\x18\x01 \x01(\x04\x12\x1c\n\x0fstart_recipient\x18\x02 \x01(\x0cH\x00\x88\x01\x01\x12%\n\x18start_recipient_included\x18\x03 \x01(\x08H\x01\x88\x01\x01\x42\x12\n\x10_start_recipientB\x1b\n\x19_start_recipient_includedB\x10\n\x0e_start_at_infoB\x08\n\x06_limitB\t\n\x07version\"\xec\x07\n*GetTokenPreProgrammedDistributionsResponse\x12\x80\x01\n\x02v0\x18\x01 \x01(\x0b\x32r.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0H\x00\x1a\xaf\x06\n,GetTokenPreProgrammedDistributionsResponseV0\x12\xa5\x01\n\x13token_distributions\x18\x01 \x01(\x0b\x32\x85\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a>\n\x16TokenDistributionEntry\x12\x14\n\x0crecipient_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x1a\xd4\x01\n\x1bTokenTimedDistributionEntry\x12\x11\n\ttimestamp\x18\x01 \x01(\x04\x12\xa1\x01\n\rdistributions\x18\x02 \x03(\x0b\x32\x89\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenDistributionEntry\x1a\xc3\x01\n\x12TokenDistributions\x12\xac\x01\n\x13token_distributions\x18\x01 \x03(\x0b\x32\x8e\x01.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse.GetTokenPreProgrammedDistributionsResponseV0.TokenTimedDistributionEntryB\x08\n\x06resultB\t\n\x07version\"\x82\x04\n-GetTokenPerpetualDistributionLastClaimRequest\x12\x86\x01\n\x02v0\x18\x01 \x01(\x0b\x32x.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.GetTokenPerpetualDistributionLastClaimRequestV0H\x00\x1aI\n\x11\x43ontractTokenInfo\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17token_contract_position\x18\x02 \x01(\r\x1a\xf1\x01\n/GetTokenPerpetualDistributionLastClaimRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12v\n\rcontract_info\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest.ContractTokenInfoH\x00\x88\x01\x01\x12\x13\n\x0bidentity_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\x42\x10\n\x0e_contract_infoB\t\n\x07version\"\x93\x05\n.GetTokenPerpetualDistributionLastClaimResponse\x12\x88\x01\n\x02v0\x18\x01 \x01(\x0b\x32z.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0H\x00\x1a\xca\x03\n0GetTokenPerpetualDistributionLastClaimResponseV0\x12\x9f\x01\n\nlast_claim\x18\x01 \x01(\x0b\x32\x88\x01.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse.GetTokenPerpetualDistributionLastClaimResponseV0.LastClaimInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\rLastClaimInfo\x12\x1a\n\x0ctimestamp_ms\x18\x01 \x01(\x04\x42\x02\x30\x01H\x00\x12\x1a\n\x0c\x62lock_height\x18\x02 \x01(\x04\x42\x02\x30\x01H\x00\x12\x0f\n\x05\x65poch\x18\x03 \x01(\rH\x00\x12\x13\n\traw_bytes\x18\x04 \x01(\x0cH\x00\x42\t\n\x07paid_atB\x08\n\x06resultB\t\n\x07version\"\xca\x01\n\x1aGetTokenTotalSupplyRequest\x12`\n\x02v0\x18\x01 \x01(\x0b\x32R.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest.GetTokenTotalSupplyRequestV0H\x00\x1a?\n\x1cGetTokenTotalSupplyRequestV0\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\r\n\x05prove\x18\x02 \x01(\x08\x42\t\n\x07version\"\xaf\x04\n\x1bGetTokenTotalSupplyResponse\x12\x62\n\x02v0\x18\x01 \x01(\x0b\x32T.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0H\x00\x1a\xa0\x03\n\x1dGetTokenTotalSupplyResponseV0\x12\x88\x01\n\x12token_total_supply\x18\x01 \x01(\x0b\x32j.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse.GetTokenTotalSupplyResponseV0.TokenTotalSupplyEntryH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1ax\n\x15TokenTotalSupplyEntry\x12\x10\n\x08token_id\x18\x01 \x01(\x0c\x12\x30\n(total_aggregated_amount_in_user_accounts\x18\x02 \x01(\x04\x12\x1b\n\x13total_system_amount\x18\x03 \x01(\x04\x42\x08\n\x06resultB\t\n\x07version\"\xd2\x01\n\x13GetGroupInfoRequest\x12R\n\x02v0\x18\x01 \x01(\x0b\x32\x44.org.dash.platform.dapi.v0.GetGroupInfoRequest.GetGroupInfoRequestV0H\x00\x1a\\\n\x15GetGroupInfoRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12\r\n\x05prove\x18\x03 \x01(\x08\x42\t\n\x07version\"\xd4\x05\n\x14GetGroupInfoResponse\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0H\x00\x1a\xda\x04\n\x16GetGroupInfoResponseV0\x12\x66\n\ngroup_info\x18\x01 \x01(\x0b\x32P.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x98\x01\n\x0eGroupInfoEntry\x12h\n\x07members\x18\x01 \x03(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x02 \x01(\r\x1a\x8a\x01\n\tGroupInfo\x12n\n\ngroup_info\x18\x01 \x01(\x0b\x32U.org.dash.platform.dapi.v0.GetGroupInfoResponse.GetGroupInfoResponseV0.GroupInfoEntryH\x00\x88\x01\x01\x42\r\n\x0b_group_infoB\x08\n\x06resultB\t\n\x07version\"\xed\x03\n\x14GetGroupInfosRequest\x12T\n\x02v0\x18\x01 \x01(\x0b\x32\x46.org.dash.platform.dapi.v0.GetGroupInfosRequest.GetGroupInfosRequestV0H\x00\x1au\n\x1cStartAtGroupContractPosition\x12%\n\x1dstart_group_contract_position\x18\x01 \x01(\r\x12.\n&start_group_contract_position_included\x18\x02 \x01(\x08\x1a\xfc\x01\n\x16GetGroupInfosRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12{\n start_at_group_contract_position\x18\x02 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupInfosRequest.StartAtGroupContractPositionH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x03 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x04 \x01(\x08\x42#\n!_start_at_group_contract_positionB\x08\n\x06_countB\t\n\x07version\"\xff\x05\n\x15GetGroupInfosResponse\x12V\n\x02v0\x18\x01 \x01(\x0b\x32H.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0H\x00\x1a\x82\x05\n\x17GetGroupInfosResponseV0\x12j\n\x0bgroup_infos\x18\x01 \x01(\x0b\x32S.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupInfosH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x04 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x34\n\x10GroupMemberEntry\x12\x11\n\tmember_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\xc3\x01\n\x16GroupPositionInfoEntry\x12\x1f\n\x17group_contract_position\x18\x01 \x01(\r\x12j\n\x07members\x18\x02 \x03(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupMemberEntry\x12\x1c\n\x14group_required_power\x18\x03 \x01(\r\x1a\x82\x01\n\nGroupInfos\x12t\n\x0bgroup_infos\x18\x01 \x03(\x0b\x32_.org.dash.platform.dapi.v0.GetGroupInfosResponse.GetGroupInfosResponseV0.GroupPositionInfoEntryB\x08\n\x06resultB\t\n\x07version\"\xbe\x04\n\x16GetGroupActionsRequest\x12X\n\x02v0\x18\x01 \x01(\x0b\x32J.org.dash.platform.dapi.v0.GetGroupActionsRequest.GetGroupActionsRequestV0H\x00\x1aL\n\x0fStartAtActionId\x12\x17\n\x0fstart_action_id\x18\x01 \x01(\x0c\x12 \n\x18start_action_id_included\x18\x02 \x01(\x08\x1a\xc8\x02\n\x18GetGroupActionsRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12N\n\x06status\x18\x03 \x01(\x0e\x32>.org.dash.platform.dapi.v0.GetGroupActionsRequest.ActionStatus\x12\x62\n\x12start_at_action_id\x18\x04 \x01(\x0b\x32\x41.org.dash.platform.dapi.v0.GetGroupActionsRequest.StartAtActionIdH\x00\x88\x01\x01\x12\x12\n\x05\x63ount\x18\x05 \x01(\rH\x01\x88\x01\x01\x12\r\n\x05prove\x18\x06 \x01(\x08\x42\x15\n\x13_start_at_action_idB\x08\n\x06_count\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\xd6\x1e\n\x17GetGroupActionsResponse\x12Z\n\x02v0\x18\x01 \x01(\x0b\x32L.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0H\x00\x1a\xd3\x1d\n\x19GetGroupActionsResponseV0\x12r\n\rgroup_actions\x18\x01 \x01(\x0b\x32Y.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionsH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a[\n\tMintEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0crecipient_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a[\n\tBurnEvent\x12\x0e\n\x06\x61mount\x18\x01 \x01(\x04\x12\x14\n\x0c\x62urn_from_id\x18\x02 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aJ\n\x0b\x46reezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1aL\n\rUnfreezeEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x66\n\x17\x44\x65stroyFrozenFundsEvent\x12\x11\n\tfrozen_id\x18\x01 \x01(\x0c\x12\x0e\n\x06\x61mount\x18\x02 \x01(\x04\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x13SharedEncryptedNote\x12\x18\n\x10sender_key_index\x18\x01 \x01(\r\x12\x1b\n\x13recipient_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a{\n\x15PersonalEncryptedNote\x12!\n\x19root_encryption_key_index\x18\x01 \x01(\r\x12\'\n\x1f\x64\x65rivation_encryption_key_index\x18\x02 \x01(\r\x12\x16\n\x0e\x65ncrypted_data\x18\x03 \x01(\x0c\x1a\xe9\x01\n\x14\x45mergencyActionEvent\x12\x81\x01\n\x0b\x61\x63tion_type\x18\x01 \x01(\x0e\x32l.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEvent.ActionType\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\"#\n\nActionType\x12\t\n\x05PAUSE\x10\x00\x12\n\n\x06RESUME\x10\x01\x42\x0e\n\x0c_public_note\x1a\x64\n\x16TokenConfigUpdateEvent\x12 \n\x18token_config_update_item\x18\x01 \x01(\x0c\x12\x18\n\x0bpublic_note\x18\x02 \x01(\tH\x00\x88\x01\x01\x42\x0e\n\x0c_public_note\x1a\xe6\x03\n\x1eUpdateDirectPurchasePriceEvent\x12\x15\n\x0b\x66ixed_price\x18\x01 \x01(\x04H\x00\x12\x95\x01\n\x0evariable_price\x18\x02 \x01(\x0b\x32{.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PricingScheduleH\x00\x12\x18\n\x0bpublic_note\x18\x03 \x01(\tH\x01\x88\x01\x01\x1a\x33\n\x10PriceForQuantity\x12\x10\n\x08quantity\x18\x01 \x01(\x04\x12\r\n\x05price\x18\x02 \x01(\x04\x1a\xac\x01\n\x0fPricingSchedule\x12\x98\x01\n\x12price_for_quantity\x18\x01 \x03(\x0b\x32|.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEvent.PriceForQuantityB\x07\n\x05priceB\x0e\n\x0c_public_note\x1a\xfc\x02\n\x10GroupActionEvent\x12n\n\x0btoken_event\x18\x01 \x01(\x0b\x32W.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenEventH\x00\x12t\n\x0e\x64ocument_event\x18\x02 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentEventH\x00\x12t\n\x0e\x63ontract_event\x18\x03 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractEventH\x00\x42\x0c\n\nevent_type\x1a\x8b\x01\n\rDocumentEvent\x12r\n\x06\x63reate\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DocumentCreateEventH\x00\x42\x06\n\x04type\x1a/\n\x13\x44ocumentCreateEvent\x12\x18\n\x10\x63reated_document\x18\x01 \x01(\x0c\x1a/\n\x13\x43ontractUpdateEvent\x12\x18\n\x10updated_contract\x18\x01 \x01(\x0c\x1a\x8b\x01\n\rContractEvent\x12r\n\x06update\x18\x01 \x01(\x0b\x32`.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.ContractUpdateEventH\x00\x42\x06\n\x04type\x1a\xd1\x07\n\nTokenEvent\x12\x66\n\x04mint\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.MintEventH\x00\x12\x66\n\x04\x62urn\x18\x02 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.BurnEventH\x00\x12j\n\x06\x66reeze\x18\x03 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.FreezeEventH\x00\x12n\n\x08unfreeze\x18\x04 \x01(\x0b\x32Z.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UnfreezeEventH\x00\x12\x84\x01\n\x14\x64\x65stroy_frozen_funds\x18\x05 \x01(\x0b\x32\x64.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.DestroyFrozenFundsEventH\x00\x12}\n\x10\x65mergency_action\x18\x06 \x01(\x0b\x32\x61.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.EmergencyActionEventH\x00\x12\x82\x01\n\x13token_config_update\x18\x07 \x01(\x0b\x32\x63.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.TokenConfigUpdateEventH\x00\x12\x83\x01\n\x0cupdate_price\x18\x08 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.UpdateDirectPurchasePriceEventH\x00\x42\x06\n\x04type\x1a\x93\x01\n\x10GroupActionEntry\x12\x11\n\taction_id\x18\x01 \x01(\x0c\x12l\n\x05\x65vent\x18\x02 \x01(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEvent\x1a\x84\x01\n\x0cGroupActions\x12t\n\rgroup_actions\x18\x01 \x03(\x0b\x32].org.dash.platform.dapi.v0.GetGroupActionsResponse.GetGroupActionsResponseV0.GroupActionEntryB\x08\n\x06resultB\t\n\x07version\"\x88\x03\n\x1cGetGroupActionSignersRequest\x12\x64\n\x02v0\x18\x01 \x01(\x0b\x32V.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.GetGroupActionSignersRequestV0H\x00\x1a\xce\x01\n\x1eGetGroupActionSignersRequestV0\x12\x13\n\x0b\x63ontract_id\x18\x01 \x01(\x0c\x12\x1f\n\x17group_contract_position\x18\x02 \x01(\r\x12T\n\x06status\x18\x03 \x01(\x0e\x32\x44.org.dash.platform.dapi.v0.GetGroupActionSignersRequest.ActionStatus\x12\x11\n\taction_id\x18\x04 \x01(\x0c\x12\r\n\x05prove\x18\x05 \x01(\x08\"&\n\x0c\x41\x63tionStatus\x12\n\n\x06\x41\x43TIVE\x10\x00\x12\n\n\x06\x43LOSED\x10\x01\x42\t\n\x07version\"\x8b\x05\n\x1dGetGroupActionSignersResponse\x12\x66\n\x02v0\x18\x01 \x01(\x0b\x32X.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0H\x00\x1a\xf6\x03\n\x1fGetGroupActionSignersResponseV0\x12\x8b\x01\n\x14group_action_signers\x18\x01 \x01(\x0b\x32k.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignersH\x00\x12\x31\n\x05proof\x18\x02 \x01(\x0b\x32 .org.dash.platform.dapi.v0.ProofH\x00\x12=\n\x08metadata\x18\x03 \x01(\x0b\x32+.org.dash.platform.dapi.v0.ResponseMetadata\x1a\x35\n\x11GroupActionSigner\x12\x11\n\tsigner_id\x18\x01 \x01(\x0c\x12\r\n\x05power\x18\x02 \x01(\r\x1a\x91\x01\n\x12GroupActionSigners\x12{\n\x07signers\x18\x01 \x03(\x0b\x32j.org.dash.platform.dapi.v0.GetGroupActionSignersResponse.GetGroupActionSignersResponseV0.GroupActionSignerB\x08\n\x06resultB\t\n\x07version*Z\n\nKeyPurpose\x12\x12\n\x0e\x41UTHENTICATION\x10\x00\x12\x0e\n\nENCRYPTION\x10\x01\x12\x0e\n\nDECRYPTION\x10\x02\x12\x0c\n\x08TRANSFER\x10\x03\x12\n\n\x06VOTING\x10\x05\x32\xf4\x36\n\x08Platform\x12\x93\x01\n\x18\x62roadcastStateTransition\x12:.org.dash.platform.dapi.v0.BroadcastStateTransitionRequest\x1a;.org.dash.platform.dapi.v0.BroadcastStateTransitionResponse\x12l\n\x0bgetIdentity\x12-.org.dash.platform.dapi.v0.GetIdentityRequest\x1a..org.dash.platform.dapi.v0.GetIdentityResponse\x12x\n\x0fgetIdentityKeys\x12\x31.org.dash.platform.dapi.v0.GetIdentityKeysRequest\x1a\x32.org.dash.platform.dapi.v0.GetIdentityKeysResponse\x12\x96\x01\n\x19getIdentitiesContractKeys\x12;.org.dash.platform.dapi.v0.GetIdentitiesContractKeysRequest\x1a<.org.dash.platform.dapi.v0.GetIdentitiesContractKeysResponse\x12{\n\x10getIdentityNonce\x12\x32.org.dash.platform.dapi.v0.GetIdentityNonceRequest\x1a\x33.org.dash.platform.dapi.v0.GetIdentityNonceResponse\x12\x93\x01\n\x18getIdentityContractNonce\x12:.org.dash.platform.dapi.v0.GetIdentityContractNonceRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityContractNonceResponse\x12\x81\x01\n\x12getIdentityBalance\x12\x34.org.dash.platform.dapi.v0.GetIdentityBalanceRequest\x1a\x35.org.dash.platform.dapi.v0.GetIdentityBalanceResponse\x12\x8a\x01\n\x15getIdentitiesBalances\x12\x37.org.dash.platform.dapi.v0.GetIdentitiesBalancesRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentitiesBalancesResponse\x12\xa2\x01\n\x1dgetIdentityBalanceAndRevision\x12?.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionRequest\x1a@.org.dash.platform.dapi.v0.GetIdentityBalanceAndRevisionResponse\x12\xaf\x01\n#getEvonodesProposedEpochBlocksByIds\x12\x45.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByIdsRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12\xb3\x01\n%getEvonodesProposedEpochBlocksByRange\x12G.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksByRangeRequest\x1a\x41.org.dash.platform.dapi.v0.GetEvonodesProposedEpochBlocksResponse\x12x\n\x0fgetDataContract\x12\x31.org.dash.platform.dapi.v0.GetDataContractRequest\x1a\x32.org.dash.platform.dapi.v0.GetDataContractResponse\x12\x8d\x01\n\x16getDataContractHistory\x12\x38.org.dash.platform.dapi.v0.GetDataContractHistoryRequest\x1a\x39.org.dash.platform.dapi.v0.GetDataContractHistoryResponse\x12{\n\x10getDataContracts\x12\x32.org.dash.platform.dapi.v0.GetDataContractsRequest\x1a\x33.org.dash.platform.dapi.v0.GetDataContractsResponse\x12o\n\x0cgetDocuments\x12..org.dash.platform.dapi.v0.GetDocumentsRequest\x1a/.org.dash.platform.dapi.v0.GetDocumentsResponse\x12\x99\x01\n\x1agetIdentityByPublicKeyHash\x12<.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashRequest\x1a=.org.dash.platform.dapi.v0.GetIdentityByPublicKeyHashResponse\x12\xb4\x01\n#getIdentityByNonUniquePublicKeyHash\x12\x45.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashRequest\x1a\x46.org.dash.platform.dapi.v0.GetIdentityByNonUniquePublicKeyHashResponse\x12\x9f\x01\n\x1cwaitForStateTransitionResult\x12>.org.dash.platform.dapi.v0.WaitForStateTransitionResultRequest\x1a?.org.dash.platform.dapi.v0.WaitForStateTransitionResultResponse\x12\x81\x01\n\x12getConsensusParams\x12\x34.org.dash.platform.dapi.v0.GetConsensusParamsRequest\x1a\x35.org.dash.platform.dapi.v0.GetConsensusParamsResponse\x12\xa5\x01\n\x1egetProtocolVersionUpgradeState\x12@.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateRequest\x1a\x41.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeStateResponse\x12\xb4\x01\n#getProtocolVersionUpgradeVoteStatus\x12\x45.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusRequest\x1a\x46.org.dash.platform.dapi.v0.GetProtocolVersionUpgradeVoteStatusResponse\x12r\n\rgetEpochsInfo\x12/.org.dash.platform.dapi.v0.GetEpochsInfoRequest\x1a\x30.org.dash.platform.dapi.v0.GetEpochsInfoResponse\x12\x8d\x01\n\x16getFinalizedEpochInfos\x12\x38.org.dash.platform.dapi.v0.GetFinalizedEpochInfosRequest\x1a\x39.org.dash.platform.dapi.v0.GetFinalizedEpochInfosResponse\x12\x8a\x01\n\x15getContestedResources\x12\x37.org.dash.platform.dapi.v0.GetContestedResourcesRequest\x1a\x38.org.dash.platform.dapi.v0.GetContestedResourcesResponse\x12\xa2\x01\n\x1dgetContestedResourceVoteState\x12?.org.dash.platform.dapi.v0.GetContestedResourceVoteStateRequest\x1a@.org.dash.platform.dapi.v0.GetContestedResourceVoteStateResponse\x12\xba\x01\n%getContestedResourceVotersForIdentity\x12G.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityRequest\x1aH.org.dash.platform.dapi.v0.GetContestedResourceVotersForIdentityResponse\x12\xae\x01\n!getContestedResourceIdentityVotes\x12\x43.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesRequest\x1a\x44.org.dash.platform.dapi.v0.GetContestedResourceIdentityVotesResponse\x12\x8a\x01\n\x15getVotePollsByEndDate\x12\x37.org.dash.platform.dapi.v0.GetVotePollsByEndDateRequest\x1a\x38.org.dash.platform.dapi.v0.GetVotePollsByEndDateResponse\x12\xa5\x01\n\x1egetPrefundedSpecializedBalance\x12@.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceRequest\x1a\x41.org.dash.platform.dapi.v0.GetPrefundedSpecializedBalanceResponse\x12\x96\x01\n\x19getTotalCreditsInPlatform\x12;.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformRequest\x1a<.org.dash.platform.dapi.v0.GetTotalCreditsInPlatformResponse\x12x\n\x0fgetPathElements\x12\x31.org.dash.platform.dapi.v0.GetPathElementsRequest\x1a\x32.org.dash.platform.dapi.v0.GetPathElementsResponse\x12\x66\n\tgetStatus\x12+.org.dash.platform.dapi.v0.GetStatusRequest\x1a,.org.dash.platform.dapi.v0.GetStatusResponse\x12\x8a\x01\n\x15getCurrentQuorumsInfo\x12\x37.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoRequest\x1a\x38.org.dash.platform.dapi.v0.GetCurrentQuorumsInfoResponse\x12\x93\x01\n\x18getIdentityTokenBalances\x12:.org.dash.platform.dapi.v0.GetIdentityTokenBalancesRequest\x1a;.org.dash.platform.dapi.v0.GetIdentityTokenBalancesResponse\x12\x99\x01\n\x1agetIdentitiesTokenBalances\x12<.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesRequest\x1a=.org.dash.platform.dapi.v0.GetIdentitiesTokenBalancesResponse\x12\x8a\x01\n\x15getIdentityTokenInfos\x12\x37.org.dash.platform.dapi.v0.GetIdentityTokenInfosRequest\x1a\x38.org.dash.platform.dapi.v0.GetIdentityTokenInfosResponse\x12\x90\x01\n\x17getIdentitiesTokenInfos\x12\x39.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosRequest\x1a:.org.dash.platform.dapi.v0.GetIdentitiesTokenInfosResponse\x12{\n\x10getTokenStatuses\x12\x32.org.dash.platform.dapi.v0.GetTokenStatusesRequest\x1a\x33.org.dash.platform.dapi.v0.GetTokenStatusesResponse\x12\x9f\x01\n\x1cgetTokenDirectPurchasePrices\x12>.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesRequest\x1a?.org.dash.platform.dapi.v0.GetTokenDirectPurchasePricesResponse\x12\x87\x01\n\x14getTokenContractInfo\x12\x36.org.dash.platform.dapi.v0.GetTokenContractInfoRequest\x1a\x37.org.dash.platform.dapi.v0.GetTokenContractInfoResponse\x12\xb1\x01\n\"getTokenPreProgrammedDistributions\x12\x44.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsRequest\x1a\x45.org.dash.platform.dapi.v0.GetTokenPreProgrammedDistributionsResponse\x12\xbd\x01\n&getTokenPerpetualDistributionLastClaim\x12H.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimRequest\x1aI.org.dash.platform.dapi.v0.GetTokenPerpetualDistributionLastClaimResponse\x12\x84\x01\n\x13getTokenTotalSupply\x12\x35.org.dash.platform.dapi.v0.GetTokenTotalSupplyRequest\x1a\x36.org.dash.platform.dapi.v0.GetTokenTotalSupplyResponse\x12o\n\x0cgetGroupInfo\x12..org.dash.platform.dapi.v0.GetGroupInfoRequest\x1a/.org.dash.platform.dapi.v0.GetGroupInfoResponse\x12r\n\rgetGroupInfos\x12/.org.dash.platform.dapi.v0.GetGroupInfosRequest\x1a\x30.org.dash.platform.dapi.v0.GetGroupInfosResponse\x12x\n\x0fgetGroupActions\x12\x31.org.dash.platform.dapi.v0.GetGroupActionsRequest\x1a\x32.org.dash.platform.dapi.v0.GetGroupActionsResponse\x12\x8a\x01\n\x15getGroupActionSigners\x12\x37.org.dash.platform.dapi.v0.GetGroupActionSignersRequest\x1a\x38.org.dash.platform.dapi.v0.GetGroupActionSignersResponse\x12\x8c\x01\n\x17subscribePlatformEvents\x12\x36.org.dash.platform.dapi.v0.PlatformSubscriptionRequest\x1a\x37.org.dash.platform.dapi.v0.PlatformSubscriptionResponse0\x01\x62\x06proto3' , dependencies=[google_dot_protobuf_dot_wrappers__pb2.DESCRIPTOR,google_dot_protobuf_dot_struct__pb2.DESCRIPTOR,google_dot_protobuf_dot_timestamp__pb2.DESCRIPTOR,]) @@ -62,8 +62,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=52509, - serialized_end=52599, + serialized_start=52502, + serialized_end=52592, ) _sym_db.RegisterEnumDescriptor(_KEYPURPOSE) @@ -95,8 +95,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=5711, - serialized_end=5794, + serialized_start=5704, + serialized_end=5787, ) _sym_db.RegisterEnumDescriptor(_SECURITYLEVELMAP_KEYKINDREQUESTTYPE) @@ -125,8 +125,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=24152, - serialized_end=24225, + serialized_start=24145, + serialized_end=24218, ) _sym_db.RegisterEnumDescriptor(_GETCONTESTEDRESOURCEVOTESTATEREQUEST_GETCONTESTEDRESOURCEVOTESTATEREQUESTV0_RESULTTYPE) @@ -155,8 +155,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=25147, - serialized_end=25226, + serialized_start=25140, + serialized_end=25219, ) _sym_db.RegisterEnumDescriptor(_GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0_FINISHEDVOTEINFO_FINISHEDVOTEOUTCOME) @@ -185,8 +185,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=28855, - serialized_end=28916, + serialized_start=28848, + serialized_end=28909, ) _sym_db.RegisterEnumDescriptor(_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0_RESOURCEVOTECHOICE_VOTECHOICETYPE) @@ -210,8 +210,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=47480, - serialized_end=47518, + serialized_start=47473, + serialized_end=47511, ) _sym_db.RegisterEnumDescriptor(_GETGROUPACTIONSREQUEST_ACTIONSTATUS) @@ -235,8 +235,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=48765, - serialized_end=48800, + serialized_start=48758, + serialized_end=48793, ) _sym_db.RegisterEnumDescriptor(_GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_EMERGENCYACTIONEVENT_ACTIONTYPE) @@ -260,8 +260,8 @@ ], containing_type=None, serialized_options=None, - serialized_start=47480, - serialized_end=47518, + serialized_start=47473, + serialized_end=47511, ) _sym_db.RegisterEnumDescriptor(_GETGROUPACTIONSIGNERSREQUEST_ACTIONSTATUS) @@ -350,9 +350,9 @@ create_key=_descriptor._internal_create_key, fields=[ _descriptor.FieldDescriptor( - name='client_subscription_id', full_name='org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.client_subscription_id', index=0, - number=1, type=9, cpp_type=9, label=1, - has_default_value=False, default_value=b"".decode('utf-8'), + name='subscription_id', full_name='org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.subscription_id', index=0, + number=1, type=4, cpp_type=4, label=1, + has_default_value=False, default_value=0, message_type=None, enum_type=None, containing_type=None, is_extension=False, extension_scope=None, serialized_options=None, file=DESCRIPTOR, create_key=_descriptor._internal_create_key), @@ -376,7 +376,7 @@ oneofs=[ ], serialized_start=531, - serialized_end=654, + serialized_end=647, ) _PLATFORMSUBSCRIPTIONRESPONSE = _descriptor.Descriptor( @@ -412,7 +412,7 @@ fields=[]), ], serialized_start=397, - serialized_end=665, + serialized_end=658, ) @@ -436,8 +436,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=953, - serialized_end=964, + serialized_start=946, + serialized_end=957, ) _PLATFORMFILTERV0_BLOCKCOMMITTED = _descriptor.Descriptor( @@ -460,8 +460,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=966, - serialized_end=982, + serialized_start=959, + serialized_end=975, ) _PLATFORMFILTERV0_STATETRANSITIONRESULTFILTER = _descriptor.Descriptor( @@ -496,8 +496,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=984, - serialized_end=1047, + serialized_start=977, + serialized_end=1040, ) _PLATFORMFILTERV0 = _descriptor.Descriptor( @@ -546,8 +546,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=668, - serialized_end=1055, + serialized_start=661, + serialized_end=1048, ) @@ -592,8 +592,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1345, - serialized_end=1424, + serialized_start=1338, + serialized_end=1417, ) _PLATFORMEVENTV0_BLOCKCOMMITTED = _descriptor.Descriptor( @@ -630,8 +630,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1426, - serialized_end=1532, + serialized_start=1419, + serialized_end=1525, ) _PLATFORMEVENTV0_STATETRANSITIONFINALIZED = _descriptor.Descriptor( @@ -668,8 +668,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1534, - serialized_end=1649, + serialized_start=1527, + serialized_end=1642, ) _PLATFORMEVENTV0_KEEPALIVE = _descriptor.Descriptor( @@ -692,8 +692,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1651, - serialized_end=1662, + serialized_start=1644, + serialized_end=1655, ) _PLATFORMEVENTV0 = _descriptor.Descriptor( @@ -742,8 +742,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=1058, - serialized_end=1671, + serialized_start=1051, + serialized_end=1664, ) @@ -809,8 +809,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1674, - serialized_end=1803, + serialized_start=1667, + serialized_end=1796, ) @@ -876,8 +876,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1806, - serialized_end=1958, + serialized_start=1799, + serialized_end=1951, ) @@ -922,8 +922,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=1960, - serialized_end=2036, + serialized_start=1953, + serialized_end=2029, ) @@ -954,8 +954,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2038, - serialized_end=2097, + serialized_start=2031, + serialized_end=2090, ) @@ -979,8 +979,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2099, - serialized_end=2133, + serialized_start=2092, + serialized_end=2126, ) @@ -1018,8 +1018,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2240, - serialized_end=2289, + serialized_start=2233, + serialized_end=2282, ) _GETIDENTITYREQUEST = _descriptor.Descriptor( @@ -1054,8 +1054,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2136, - serialized_end=2300, + serialized_start=2129, + serialized_end=2293, ) @@ -1093,8 +1093,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2422, - serialized_end=2485, + serialized_start=2415, + serialized_end=2478, ) _GETIDENTITYNONCEREQUEST = _descriptor.Descriptor( @@ -1129,8 +1129,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2303, - serialized_end=2496, + serialized_start=2296, + serialized_end=2489, ) @@ -1175,8 +1175,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2642, - serialized_end=2734, + serialized_start=2635, + serialized_end=2727, ) _GETIDENTITYCONTRACTNONCEREQUEST = _descriptor.Descriptor( @@ -1211,8 +1211,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2499, - serialized_end=2745, + serialized_start=2492, + serialized_end=2738, ) @@ -1250,8 +1250,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=2873, - serialized_end=2929, + serialized_start=2866, + serialized_end=2922, ) _GETIDENTITYBALANCEREQUEST = _descriptor.Descriptor( @@ -1286,8 +1286,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2748, - serialized_end=2940, + serialized_start=2741, + serialized_end=2933, ) @@ -1325,8 +1325,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=3101, - serialized_end=3168, + serialized_start=3094, + serialized_end=3161, ) _GETIDENTITYBALANCEANDREVISIONREQUEST = _descriptor.Descriptor( @@ -1361,8 +1361,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=2943, - serialized_end=3179, + serialized_start=2936, + serialized_end=3172, ) @@ -1412,8 +1412,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3290, - serialized_end=3457, + serialized_start=3283, + serialized_end=3450, ) _GETIDENTITYRESPONSE = _descriptor.Descriptor( @@ -1448,8 +1448,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3182, - serialized_end=3468, + serialized_start=3175, + serialized_end=3461, ) @@ -1499,8 +1499,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3594, - serialized_end=3776, + serialized_start=3587, + serialized_end=3769, ) _GETIDENTITYNONCERESPONSE = _descriptor.Descriptor( @@ -1535,8 +1535,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3471, - serialized_end=3787, + serialized_start=3464, + serialized_end=3780, ) @@ -1586,8 +1586,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3937, - serialized_end=4136, + serialized_start=3930, + serialized_end=4129, ) _GETIDENTITYCONTRACTNONCERESPONSE = _descriptor.Descriptor( @@ -1622,8 +1622,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=3790, - serialized_end=4147, + serialized_start=3783, + serialized_end=4140, ) @@ -1673,8 +1673,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4279, - serialized_end=4456, + serialized_start=4272, + serialized_end=4449, ) _GETIDENTITYBALANCERESPONSE = _descriptor.Descriptor( @@ -1709,8 +1709,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4150, - serialized_end=4467, + serialized_start=4143, + serialized_end=4460, ) @@ -1748,8 +1748,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=4947, - serialized_end=5010, + serialized_start=4940, + serialized_end=5003, ) _GETIDENTITYBALANCEANDREVISIONRESPONSE_GETIDENTITYBALANCEANDREVISIONRESPONSEV0 = _descriptor.Descriptor( @@ -1798,8 +1798,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4632, - serialized_end=5020, + serialized_start=4625, + serialized_end=5013, ) _GETIDENTITYBALANCEANDREVISIONRESPONSE = _descriptor.Descriptor( @@ -1834,8 +1834,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=4470, - serialized_end=5031, + serialized_start=4463, + serialized_end=5024, ) @@ -1885,8 +1885,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=5034, - serialized_end=5243, + serialized_start=5027, + serialized_end=5236, ) @@ -1910,8 +1910,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5245, - serialized_end=5254, + serialized_start=5238, + serialized_end=5247, ) @@ -1942,8 +1942,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5256, - serialized_end=5287, + serialized_start=5249, + serialized_end=5280, ) @@ -1981,8 +1981,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5378, - serialized_end=5472, + serialized_start=5371, + serialized_end=5465, ) _SEARCHKEY = _descriptor.Descriptor( @@ -2012,8 +2012,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5290, - serialized_end=5472, + serialized_start=5283, + serialized_end=5465, ) @@ -2051,8 +2051,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5590, - serialized_end=5709, + serialized_start=5583, + serialized_end=5702, ) _SECURITYLEVELMAP = _descriptor.Descriptor( @@ -2083,8 +2083,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5475, - serialized_end=5794, + serialized_start=5468, + serialized_end=5787, ) @@ -2143,8 +2143,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=5914, - serialized_end=6132, + serialized_start=5907, + serialized_end=6125, ) _GETIDENTITYKEYSREQUEST = _descriptor.Descriptor( @@ -2179,8 +2179,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=5797, - serialized_end=6143, + serialized_start=5790, + serialized_end=6136, ) @@ -2211,8 +2211,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=6508, - serialized_end=6534, + serialized_start=6501, + serialized_end=6527, ) _GETIDENTITYKEYSRESPONSE_GETIDENTITYKEYSRESPONSEV0 = _descriptor.Descriptor( @@ -2261,8 +2261,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6266, - serialized_end=6544, + serialized_start=6259, + serialized_end=6537, ) _GETIDENTITYKEYSRESPONSE = _descriptor.Descriptor( @@ -2297,8 +2297,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6146, - serialized_end=6555, + serialized_start=6139, + serialized_end=6548, ) @@ -2362,8 +2362,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6705, - serialized_end=6914, + serialized_start=6698, + serialized_end=6907, ) _GETIDENTITIESCONTRACTKEYSREQUEST = _descriptor.Descriptor( @@ -2398,8 +2398,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6558, - serialized_end=6925, + serialized_start=6551, + serialized_end=6918, ) @@ -2437,8 +2437,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7372, - serialized_end=7461, + serialized_start=7365, + serialized_end=7454, ) _GETIDENTITIESCONTRACTKEYSRESPONSE_GETIDENTITIESCONTRACTKEYSRESPONSEV0_IDENTITYKEYS = _descriptor.Descriptor( @@ -2475,8 +2475,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7464, - serialized_end=7623, + serialized_start=7457, + serialized_end=7616, ) _GETIDENTITIESCONTRACTKEYSRESPONSE_GETIDENTITIESCONTRACTKEYSRESPONSEV0_IDENTITIESKEYS = _descriptor.Descriptor( @@ -2506,8 +2506,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=7626, - serialized_end=7770, + serialized_start=7619, + serialized_end=7763, ) _GETIDENTITIESCONTRACTKEYSRESPONSE_GETIDENTITIESCONTRACTKEYSRESPONSEV0 = _descriptor.Descriptor( @@ -2556,8 +2556,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7078, - serialized_end=7780, + serialized_start=7071, + serialized_end=7773, ) _GETIDENTITIESCONTRACTKEYSRESPONSE = _descriptor.Descriptor( @@ -2592,8 +2592,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=6928, - serialized_end=7791, + serialized_start=6921, + serialized_end=7784, ) @@ -2643,8 +2643,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7971, - serialized_end=8075, + serialized_start=7964, + serialized_end=8068, ) _GETEVONODESPROPOSEDEPOCHBLOCKSBYIDSREQUEST = _descriptor.Descriptor( @@ -2679,8 +2679,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=7794, - serialized_end=8086, + serialized_start=7787, + serialized_end=8079, ) @@ -2718,8 +2718,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8592, - serialized_end=8655, + serialized_start=8585, + serialized_end=8648, ) _GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSE_GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSEV0_EVONODESPROPOSEDBLOCKS = _descriptor.Descriptor( @@ -2749,8 +2749,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=8658, - serialized_end=8854, + serialized_start=8651, + serialized_end=8847, ) _GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSE_GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSEV0 = _descriptor.Descriptor( @@ -2799,8 +2799,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8254, - serialized_end=8864, + serialized_start=8247, + serialized_end=8857, ) _GETEVONODESPROPOSEDEPOCHBLOCKSRESPONSE = _descriptor.Descriptor( @@ -2835,8 +2835,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8089, - serialized_end=8875, + serialized_start=8082, + serialized_end=8868, ) @@ -2910,8 +2910,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9062, - serialized_end=9237, + serialized_start=9055, + serialized_end=9230, ) _GETEVONODESPROPOSEDEPOCHBLOCKSBYRANGEREQUEST = _descriptor.Descriptor( @@ -2946,8 +2946,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=8878, - serialized_end=9248, + serialized_start=8871, + serialized_end=9241, ) @@ -2985,8 +2985,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9385, - serialized_end=9445, + serialized_start=9378, + serialized_end=9438, ) _GETIDENTITIESBALANCESREQUEST = _descriptor.Descriptor( @@ -3021,8 +3021,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9251, - serialized_end=9456, + serialized_start=9244, + serialized_end=9449, ) @@ -3065,8 +3065,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9887, - serialized_end=9963, + serialized_start=9880, + serialized_end=9956, ) _GETIDENTITIESBALANCESRESPONSE_GETIDENTITIESBALANCESRESPONSEV0_IDENTITIESBALANCES = _descriptor.Descriptor( @@ -3096,8 +3096,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=9966, - serialized_end=10109, + serialized_start=9959, + serialized_end=10102, ) _GETIDENTITIESBALANCESRESPONSE_GETIDENTITIESBALANCESRESPONSEV0 = _descriptor.Descriptor( @@ -3146,8 +3146,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9597, - serialized_end=10119, + serialized_start=9590, + serialized_end=10112, ) _GETIDENTITIESBALANCESRESPONSE = _descriptor.Descriptor( @@ -3182,8 +3182,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=9459, - serialized_end=10130, + serialized_start=9452, + serialized_end=10123, ) @@ -3221,8 +3221,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10249, - serialized_end=10302, + serialized_start=10242, + serialized_end=10295, ) _GETDATACONTRACTREQUEST = _descriptor.Descriptor( @@ -3257,8 +3257,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10133, - serialized_end=10313, + serialized_start=10126, + serialized_end=10306, ) @@ -3308,8 +3308,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10436, - serialized_end=10612, + serialized_start=10429, + serialized_end=10605, ) _GETDATACONTRACTRESPONSE = _descriptor.Descriptor( @@ -3344,8 +3344,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10316, - serialized_end=10623, + serialized_start=10309, + serialized_end=10616, ) @@ -3383,8 +3383,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10745, - serialized_end=10800, + serialized_start=10738, + serialized_end=10793, ) _GETDATACONTRACTSREQUEST = _descriptor.Descriptor( @@ -3419,8 +3419,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10626, - serialized_end=10811, + serialized_start=10619, + serialized_end=10804, ) @@ -3458,8 +3458,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=10936, - serialized_end=11027, + serialized_start=10929, + serialized_end=11020, ) _GETDATACONTRACTSRESPONSE_DATACONTRACTS = _descriptor.Descriptor( @@ -3489,8 +3489,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11029, - serialized_end=11146, + serialized_start=11022, + serialized_end=11139, ) _GETDATACONTRACTSRESPONSE_GETDATACONTRACTSRESPONSEV0 = _descriptor.Descriptor( @@ -3539,8 +3539,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11149, - serialized_end=11394, + serialized_start=11142, + serialized_end=11387, ) _GETDATACONTRACTSRESPONSE = _descriptor.Descriptor( @@ -3575,8 +3575,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=10814, - serialized_end=11405, + serialized_start=10807, + serialized_end=11398, ) @@ -3635,8 +3635,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=11546, - serialized_end=11722, + serialized_start=11539, + serialized_end=11715, ) _GETDATACONTRACTHISTORYREQUEST = _descriptor.Descriptor( @@ -3671,8 +3671,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11408, - serialized_end=11733, + serialized_start=11401, + serialized_end=11726, ) @@ -3710,8 +3710,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12173, - serialized_end=12232, + serialized_start=12166, + serialized_end=12225, ) _GETDATACONTRACTHISTORYRESPONSE_GETDATACONTRACTHISTORYRESPONSEV0_DATACONTRACTHISTORY = _descriptor.Descriptor( @@ -3741,8 +3741,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=12235, - serialized_end=12405, + serialized_start=12228, + serialized_end=12398, ) _GETDATACONTRACTHISTORYRESPONSE_GETDATACONTRACTHISTORYRESPONSEV0 = _descriptor.Descriptor( @@ -3791,8 +3791,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11877, - serialized_end=12415, + serialized_start=11870, + serialized_end=12408, ) _GETDATACONTRACTHISTORYRESPONSE = _descriptor.Descriptor( @@ -3827,8 +3827,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=11736, - serialized_end=12426, + serialized_start=11729, + serialized_end=12419, ) @@ -3913,8 +3913,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12537, - serialized_end=12724, + serialized_start=12530, + serialized_end=12717, ) _GETDOCUMENTSREQUEST = _descriptor.Descriptor( @@ -3949,8 +3949,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12429, - serialized_end=12735, + serialized_start=12422, + serialized_end=12728, ) @@ -3981,8 +3981,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13092, - serialized_end=13122, + serialized_start=13085, + serialized_end=13115, ) _GETDOCUMENTSRESPONSE_GETDOCUMENTSRESPONSEV0 = _descriptor.Descriptor( @@ -4031,8 +4031,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12849, - serialized_end=13132, + serialized_start=12842, + serialized_end=13125, ) _GETDOCUMENTSRESPONSE = _descriptor.Descriptor( @@ -4067,8 +4067,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=12738, - serialized_end=13143, + serialized_start=12731, + serialized_end=13136, ) @@ -4106,8 +4106,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=13295, - serialized_end=13372, + serialized_start=13288, + serialized_end=13365, ) _GETIDENTITYBYPUBLICKEYHASHREQUEST = _descriptor.Descriptor( @@ -4142,8 +4142,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13146, - serialized_end=13383, + serialized_start=13139, + serialized_end=13376, ) @@ -4193,8 +4193,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13539, - serialized_end=13721, + serialized_start=13532, + serialized_end=13714, ) _GETIDENTITYBYPUBLICKEYHASHRESPONSE = _descriptor.Descriptor( @@ -4229,8 +4229,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13386, - serialized_end=13732, + serialized_start=13379, + serialized_end=13725, ) @@ -4280,8 +4280,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13913, - serialized_end=14041, + serialized_start=13906, + serialized_end=14034, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHREQUEST = _descriptor.Descriptor( @@ -4316,8 +4316,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=13735, - serialized_end=14052, + serialized_start=13728, + serialized_end=14045, ) @@ -4353,8 +4353,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14665, - serialized_end=14719, + serialized_start=14658, + serialized_end=14712, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSE_GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSEV0_IDENTITYPROVEDRESPONSE = _descriptor.Descriptor( @@ -4396,8 +4396,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14722, - serialized_end=14888, + serialized_start=14715, + serialized_end=14881, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSE_GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSEV0 = _descriptor.Descriptor( @@ -4446,8 +4446,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14236, - serialized_end=14898, + serialized_start=14229, + serialized_end=14891, ) _GETIDENTITYBYNONUNIQUEPUBLICKEYHASHRESPONSE = _descriptor.Descriptor( @@ -4482,8 +4482,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14055, - serialized_end=14909, + serialized_start=14048, + serialized_end=14902, ) @@ -4521,8 +4521,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15067, - serialized_end=15152, + serialized_start=15060, + serialized_end=15145, ) _WAITFORSTATETRANSITIONRESULTREQUEST = _descriptor.Descriptor( @@ -4557,8 +4557,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=14912, - serialized_end=15163, + serialized_start=14905, + serialized_end=15156, ) @@ -4608,8 +4608,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15325, - serialized_end=15564, + serialized_start=15318, + serialized_end=15557, ) _WAITFORSTATETRANSITIONRESULTRESPONSE = _descriptor.Descriptor( @@ -4644,8 +4644,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15166, - serialized_end=15575, + serialized_start=15159, + serialized_end=15568, ) @@ -4683,8 +4683,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15703, - serialized_end=15763, + serialized_start=15696, + serialized_end=15756, ) _GETCONSENSUSPARAMSREQUEST = _descriptor.Descriptor( @@ -4719,8 +4719,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15578, - serialized_end=15774, + serialized_start=15571, + serialized_end=15767, ) @@ -4765,8 +4765,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15905, - serialized_end=15985, + serialized_start=15898, + serialized_end=15978, ) _GETCONSENSUSPARAMSRESPONSE_CONSENSUSPARAMSEVIDENCE = _descriptor.Descriptor( @@ -4810,8 +4810,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=15987, - serialized_end=16085, + serialized_start=15980, + serialized_end=16078, ) _GETCONSENSUSPARAMSRESPONSE_GETCONSENSUSPARAMSRESPONSEV0 = _descriptor.Descriptor( @@ -4848,8 +4848,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16088, - serialized_end=16306, + serialized_start=16081, + serialized_end=16299, ) _GETCONSENSUSPARAMSRESPONSE = _descriptor.Descriptor( @@ -4884,8 +4884,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=15777, - serialized_end=16317, + serialized_start=15770, + serialized_end=16310, ) @@ -4916,8 +4916,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=16481, - serialized_end=16537, + serialized_start=16474, + serialized_end=16530, ) _GETPROTOCOLVERSIONUPGRADESTATEREQUEST = _descriptor.Descriptor( @@ -4952,8 +4952,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16320, - serialized_end=16548, + serialized_start=16313, + serialized_end=16541, ) @@ -4984,8 +4984,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17013, - serialized_end=17163, + serialized_start=17006, + serialized_end=17156, ) _GETPROTOCOLVERSIONUPGRADESTATERESPONSE_GETPROTOCOLVERSIONUPGRADESTATERESPONSEV0_VERSIONENTRY = _descriptor.Descriptor( @@ -5022,8 +5022,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17165, - serialized_end=17223, + serialized_start=17158, + serialized_end=17216, ) _GETPROTOCOLVERSIONUPGRADESTATERESPONSE_GETPROTOCOLVERSIONUPGRADESTATERESPONSEV0 = _descriptor.Descriptor( @@ -5072,8 +5072,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16716, - serialized_end=17233, + serialized_start=16709, + serialized_end=17226, ) _GETPROTOCOLVERSIONUPGRADESTATERESPONSE = _descriptor.Descriptor( @@ -5108,8 +5108,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=16551, - serialized_end=17244, + serialized_start=16544, + serialized_end=17237, ) @@ -5154,8 +5154,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=17424, - serialized_end=17527, + serialized_start=17417, + serialized_end=17520, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSREQUEST = _descriptor.Descriptor( @@ -5190,8 +5190,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=17247, - serialized_end=17538, + serialized_start=17240, + serialized_end=17531, ) @@ -5222,8 +5222,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18041, - serialized_end=18216, + serialized_start=18034, + serialized_end=18209, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSE_GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSEV0_VERSIONSIGNAL = _descriptor.Descriptor( @@ -5260,8 +5260,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18218, - serialized_end=18271, + serialized_start=18211, + serialized_end=18264, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSE_GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSEV0 = _descriptor.Descriptor( @@ -5310,8 +5310,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=17722, - serialized_end=18281, + serialized_start=17715, + serialized_end=18274, ) _GETPROTOCOLVERSIONUPGRADEVOTESTATUSRESPONSE = _descriptor.Descriptor( @@ -5346,8 +5346,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=17541, - serialized_end=18292, + serialized_start=17534, + serialized_end=18285, ) @@ -5399,8 +5399,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18405, - serialized_end=18529, + serialized_start=18398, + serialized_end=18522, ) _GETEPOCHSINFOREQUEST = _descriptor.Descriptor( @@ -5435,8 +5435,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18295, - serialized_end=18540, + serialized_start=18288, + serialized_end=18533, ) @@ -5467,8 +5467,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=18901, - serialized_end=19018, + serialized_start=18894, + serialized_end=19011, ) _GETEPOCHSINFORESPONSE_GETEPOCHSINFORESPONSEV0_EPOCHINFO = _descriptor.Descriptor( @@ -5533,8 +5533,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19021, - serialized_end=19187, + serialized_start=19014, + serialized_end=19180, ) _GETEPOCHSINFORESPONSE_GETEPOCHSINFORESPONSEV0 = _descriptor.Descriptor( @@ -5583,8 +5583,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18657, - serialized_end=19197, + serialized_start=18650, + serialized_end=19190, ) _GETEPOCHSINFORESPONSE = _descriptor.Descriptor( @@ -5619,8 +5619,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=18543, - serialized_end=19208, + serialized_start=18536, + serialized_end=19201, ) @@ -5679,8 +5679,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19349, - serialized_end=19519, + serialized_start=19342, + serialized_end=19512, ) _GETFINALIZEDEPOCHINFOSREQUEST = _descriptor.Descriptor( @@ -5715,8 +5715,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19211, - serialized_end=19530, + serialized_start=19204, + serialized_end=19523, ) @@ -5747,8 +5747,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=19956, - serialized_end=20120, + serialized_start=19949, + serialized_end=20113, ) _GETFINALIZEDEPOCHINFOSRESPONSE_GETFINALIZEDEPOCHINFOSRESPONSEV0_FINALIZEDEPOCHINFO = _descriptor.Descriptor( @@ -5862,8 +5862,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20123, - serialized_end=20666, + serialized_start=20116, + serialized_end=20659, ) _GETFINALIZEDEPOCHINFOSRESPONSE_GETFINALIZEDEPOCHINFOSRESPONSEV0_BLOCKPROPOSER = _descriptor.Descriptor( @@ -5900,8 +5900,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=20668, - serialized_end=20725, + serialized_start=20661, + serialized_end=20718, ) _GETFINALIZEDEPOCHINFOSRESPONSE_GETFINALIZEDEPOCHINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -5950,8 +5950,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19674, - serialized_end=20735, + serialized_start=19667, + serialized_end=20728, ) _GETFINALIZEDEPOCHINFOSRESPONSE = _descriptor.Descriptor( @@ -5986,8 +5986,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=19533, - serialized_end=20746, + serialized_start=19526, + serialized_end=20739, ) @@ -6025,8 +6025,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=21241, - serialized_end=21310, + serialized_start=21234, + serialized_end=21303, ) _GETCONTESTEDRESOURCESREQUEST_GETCONTESTEDRESOURCESREQUESTV0 = _descriptor.Descriptor( @@ -6122,8 +6122,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=20884, - serialized_end=21344, + serialized_start=20877, + serialized_end=21337, ) _GETCONTESTEDRESOURCESREQUEST = _descriptor.Descriptor( @@ -6158,8 +6158,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=20749, - serialized_end=21355, + serialized_start=20742, + serialized_end=21348, ) @@ -6190,8 +6190,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=21797, - serialized_end=21857, + serialized_start=21790, + serialized_end=21850, ) _GETCONTESTEDRESOURCESRESPONSE_GETCONTESTEDRESOURCESRESPONSEV0 = _descriptor.Descriptor( @@ -6240,8 +6240,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21496, - serialized_end=21867, + serialized_start=21489, + serialized_end=21860, ) _GETCONTESTEDRESOURCESRESPONSE = _descriptor.Descriptor( @@ -6276,8 +6276,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21358, - serialized_end=21878, + serialized_start=21351, + serialized_end=21871, ) @@ -6315,8 +6315,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=22391, - serialized_end=22464, + serialized_start=22384, + serialized_end=22457, ) _GETVOTEPOLLSBYENDDATEREQUEST_GETVOTEPOLLSBYENDDATEREQUESTV0_ENDATTIMEINFO = _descriptor.Descriptor( @@ -6353,8 +6353,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=22466, - serialized_end=22533, + serialized_start=22459, + serialized_end=22526, ) _GETVOTEPOLLSBYENDDATEREQUEST_GETVOTEPOLLSBYENDDATEREQUESTV0 = _descriptor.Descriptor( @@ -6439,8 +6439,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=22016, - serialized_end=22592, + serialized_start=22009, + serialized_end=22585, ) _GETVOTEPOLLSBYENDDATEREQUEST = _descriptor.Descriptor( @@ -6475,8 +6475,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=21881, - serialized_end=22603, + serialized_start=21874, + serialized_end=22596, ) @@ -6514,8 +6514,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=23052, - serialized_end=23138, + serialized_start=23045, + serialized_end=23131, ) _GETVOTEPOLLSBYENDDATERESPONSE_GETVOTEPOLLSBYENDDATERESPONSEV0_SERIALIZEDVOTEPOLLSBYTIMESTAMPS = _descriptor.Descriptor( @@ -6552,8 +6552,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=23141, - serialized_end=23356, + serialized_start=23134, + serialized_end=23349, ) _GETVOTEPOLLSBYENDDATERESPONSE_GETVOTEPOLLSBYENDDATERESPONSEV0 = _descriptor.Descriptor( @@ -6602,8 +6602,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=22744, - serialized_end=23366, + serialized_start=22737, + serialized_end=23359, ) _GETVOTEPOLLSBYENDDATERESPONSE = _descriptor.Descriptor( @@ -6638,8 +6638,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=22606, - serialized_end=23377, + serialized_start=22599, + serialized_end=23370, ) @@ -6677,8 +6677,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=24066, - serialized_end=24150, + serialized_start=24059, + serialized_end=24143, ) _GETCONTESTEDRESOURCEVOTESTATEREQUEST_GETCONTESTEDRESOURCEVOTESTATEREQUESTV0 = _descriptor.Descriptor( @@ -6775,8 +6775,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=23539, - serialized_end=24264, + serialized_start=23532, + serialized_end=24257, ) _GETCONTESTEDRESOURCEVOTESTATEREQUEST = _descriptor.Descriptor( @@ -6811,8 +6811,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=23380, - serialized_end=24275, + serialized_start=23373, + serialized_end=24268, ) @@ -6884,8 +6884,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24775, - serialized_end=25249, + serialized_start=24768, + serialized_end=25242, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0_CONTESTEDRESOURCECONTENDERS = _descriptor.Descriptor( @@ -6951,8 +6951,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25252, - serialized_end=25704, + serialized_start=25245, + serialized_end=25697, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0_CONTENDER = _descriptor.Descriptor( @@ -7006,8 +7006,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25706, - serialized_end=25813, + serialized_start=25699, + serialized_end=25806, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE_GETCONTESTEDRESOURCEVOTESTATERESPONSEV0 = _descriptor.Descriptor( @@ -7056,8 +7056,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24440, - serialized_end=25823, + serialized_start=24433, + serialized_end=25816, ) _GETCONTESTEDRESOURCEVOTESTATERESPONSE = _descriptor.Descriptor( @@ -7092,8 +7092,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=24278, - serialized_end=25834, + serialized_start=24271, + serialized_end=25827, ) @@ -7131,8 +7131,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=24066, - serialized_end=24150, + serialized_start=24059, + serialized_end=24143, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYREQUEST_GETCONTESTEDRESOURCEVOTERSFORIDENTITYREQUESTV0 = _descriptor.Descriptor( @@ -7228,8 +7228,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=26021, - serialized_end=26551, + serialized_start=26014, + serialized_end=26544, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYREQUEST = _descriptor.Descriptor( @@ -7264,8 +7264,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=25837, - serialized_end=26562, + serialized_start=25830, + serialized_end=26555, ) @@ -7303,8 +7303,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=27102, - serialized_end=27169, + serialized_start=27095, + serialized_end=27162, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYRESPONSE_GETCONTESTEDRESOURCEVOTERSFORIDENTITYRESPONSEV0 = _descriptor.Descriptor( @@ -7353,8 +7353,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=26752, - serialized_end=27179, + serialized_start=26745, + serialized_end=27172, ) _GETCONTESTEDRESOURCEVOTERSFORIDENTITYRESPONSE = _descriptor.Descriptor( @@ -7389,8 +7389,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=26565, - serialized_end=27190, + serialized_start=26558, + serialized_end=27183, ) @@ -7428,8 +7428,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=27739, - serialized_end=27836, + serialized_start=27732, + serialized_end=27829, ) _GETCONTESTEDRESOURCEIDENTITYVOTESREQUEST_GETCONTESTEDRESOURCEIDENTITYVOTESREQUESTV0 = _descriptor.Descriptor( @@ -7499,8 +7499,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27364, - serialized_end=27867, + serialized_start=27357, + serialized_end=27860, ) _GETCONTESTEDRESOURCEIDENTITYVOTESREQUEST = _descriptor.Descriptor( @@ -7535,8 +7535,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27193, - serialized_end=27878, + serialized_start=27186, + serialized_end=27871, ) @@ -7574,8 +7574,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=28381, - serialized_end=28628, + serialized_start=28374, + serialized_end=28621, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0_RESOURCEVOTECHOICE = _descriptor.Descriptor( @@ -7618,8 +7618,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=28631, - serialized_end=28932, + serialized_start=28624, + serialized_end=28925, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0_CONTESTEDRESOURCEIDENTITYVOTE = _descriptor.Descriptor( @@ -7670,8 +7670,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=28935, - serialized_end=29212, + serialized_start=28928, + serialized_end=29205, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE_GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSEV0 = _descriptor.Descriptor( @@ -7720,8 +7720,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=28055, - serialized_end=29222, + serialized_start=28048, + serialized_end=29215, ) _GETCONTESTEDRESOURCEIDENTITYVOTESRESPONSE = _descriptor.Descriptor( @@ -7756,8 +7756,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=27881, - serialized_end=29233, + serialized_start=27874, + serialized_end=29226, ) @@ -7795,8 +7795,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=29397, - serialized_end=29465, + serialized_start=29390, + serialized_end=29458, ) _GETPREFUNDEDSPECIALIZEDBALANCEREQUEST = _descriptor.Descriptor( @@ -7831,8 +7831,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29236, - serialized_end=29476, + serialized_start=29229, + serialized_end=29469, ) @@ -7882,8 +7882,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29644, - serialized_end=29833, + serialized_start=29637, + serialized_end=29826, ) _GETPREFUNDEDSPECIALIZEDBALANCERESPONSE = _descriptor.Descriptor( @@ -7918,8 +7918,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29479, - serialized_end=29844, + serialized_start=29472, + serialized_end=29837, ) @@ -7950,8 +7950,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=29993, - serialized_end=30044, + serialized_start=29986, + serialized_end=30037, ) _GETTOTALCREDITSINPLATFORMREQUEST = _descriptor.Descriptor( @@ -7986,8 +7986,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=29847, - serialized_end=30055, + serialized_start=29840, + serialized_end=30048, ) @@ -8037,8 +8037,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30208, - serialized_end=30392, + serialized_start=30201, + serialized_end=30385, ) _GETTOTALCREDITSINPLATFORMRESPONSE = _descriptor.Descriptor( @@ -8073,8 +8073,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30058, - serialized_end=30403, + serialized_start=30051, + serialized_end=30396, ) @@ -8119,8 +8119,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30522, - serialized_end=30591, + serialized_start=30515, + serialized_end=30584, ) _GETPATHELEMENTSREQUEST = _descriptor.Descriptor( @@ -8155,8 +8155,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30406, - serialized_end=30602, + serialized_start=30399, + serialized_end=30595, ) @@ -8187,8 +8187,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=30975, - serialized_end=31003, + serialized_start=30968, + serialized_end=30996, ) _GETPATHELEMENTSRESPONSE_GETPATHELEMENTSRESPONSEV0 = _descriptor.Descriptor( @@ -8237,8 +8237,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30725, - serialized_end=31013, + serialized_start=30718, + serialized_end=31006, ) _GETPATHELEMENTSRESPONSE = _descriptor.Descriptor( @@ -8273,8 +8273,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=30605, - serialized_end=31024, + serialized_start=30598, + serialized_end=31017, ) @@ -8298,8 +8298,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=31125, - serialized_end=31145, + serialized_start=31118, + serialized_end=31138, ) _GETSTATUSREQUEST = _descriptor.Descriptor( @@ -8334,8 +8334,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=31027, - serialized_end=31156, + serialized_start=31020, + serialized_end=31149, ) @@ -8390,8 +8390,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=32033, - serialized_end=32127, + serialized_start=32026, + serialized_end=32120, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION_PROTOCOL_TENDERDASH = _descriptor.Descriptor( @@ -8428,8 +8428,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32360, - serialized_end=32400, + serialized_start=32353, + serialized_end=32393, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION_PROTOCOL_DRIVE = _descriptor.Descriptor( @@ -8473,8 +8473,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32402, - serialized_end=32462, + serialized_start=32395, + serialized_end=32455, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION_PROTOCOL = _descriptor.Descriptor( @@ -8511,8 +8511,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32130, - serialized_end=32462, + serialized_start=32123, + serialized_end=32455, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_VERSION = _descriptor.Descriptor( @@ -8549,8 +8549,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=31820, - serialized_end=32462, + serialized_start=31813, + serialized_end=32455, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_TIME = _descriptor.Descriptor( @@ -8616,8 +8616,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=32464, - serialized_end=32591, + serialized_start=32457, + serialized_end=32584, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_NODE = _descriptor.Descriptor( @@ -8659,8 +8659,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=32593, - serialized_end=32653, + serialized_start=32586, + serialized_end=32646, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_CHAIN = _descriptor.Descriptor( @@ -8751,8 +8751,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=32656, - serialized_end=32963, + serialized_start=32649, + serialized_end=32956, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_NETWORK = _descriptor.Descriptor( @@ -8796,8 +8796,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=32965, - serialized_end=33032, + serialized_start=32958, + serialized_end=33025, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0_STATESYNC = _descriptor.Descriptor( @@ -8876,8 +8876,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33035, - serialized_end=33296, + serialized_start=33028, + serialized_end=33289, ) _GETSTATUSRESPONSE_GETSTATUSRESPONSEV0 = _descriptor.Descriptor( @@ -8942,8 +8942,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=31261, - serialized_end=33296, + serialized_start=31254, + serialized_end=33289, ) _GETSTATUSRESPONSE = _descriptor.Descriptor( @@ -8978,8 +8978,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=31159, - serialized_end=33307, + serialized_start=31152, + serialized_end=33300, ) @@ -9003,8 +9003,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33444, - serialized_end=33476, + serialized_start=33437, + serialized_end=33469, ) _GETCURRENTQUORUMSINFOREQUEST = _descriptor.Descriptor( @@ -9039,8 +9039,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=33310, - serialized_end=33487, + serialized_start=33303, + serialized_end=33480, ) @@ -9085,8 +9085,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33627, - serialized_end=33697, + serialized_start=33620, + serialized_end=33690, ) _GETCURRENTQUORUMSINFORESPONSE_VALIDATORSETV0 = _descriptor.Descriptor( @@ -9137,8 +9137,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33700, - serialized_end=33875, + serialized_start=33693, + serialized_end=33868, ) _GETCURRENTQUORUMSINFORESPONSE_GETCURRENTQUORUMSINFORESPONSEV0 = _descriptor.Descriptor( @@ -9196,8 +9196,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=33878, - serialized_end=34152, + serialized_start=33871, + serialized_end=34145, ) _GETCURRENTQUORUMSINFORESPONSE = _descriptor.Descriptor( @@ -9232,8 +9232,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=33490, - serialized_end=34163, + serialized_start=33483, + serialized_end=34156, ) @@ -9278,8 +9278,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=34309, - serialized_end=34399, + serialized_start=34302, + serialized_end=34392, ) _GETIDENTITYTOKENBALANCESREQUEST = _descriptor.Descriptor( @@ -9314,8 +9314,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34166, - serialized_end=34410, + serialized_start=34159, + serialized_end=34403, ) @@ -9358,8 +9358,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34849, - serialized_end=34920, + serialized_start=34842, + serialized_end=34913, ) _GETIDENTITYTOKENBALANCESRESPONSE_GETIDENTITYTOKENBALANCESRESPONSEV0_TOKENBALANCES = _descriptor.Descriptor( @@ -9389,8 +9389,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=34923, - serialized_end=35077, + serialized_start=34916, + serialized_end=35070, ) _GETIDENTITYTOKENBALANCESRESPONSE_GETIDENTITYTOKENBALANCESRESPONSEV0 = _descriptor.Descriptor( @@ -9439,8 +9439,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34560, - serialized_end=35087, + serialized_start=34553, + serialized_end=35080, ) _GETIDENTITYTOKENBALANCESRESPONSE = _descriptor.Descriptor( @@ -9475,8 +9475,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=34413, - serialized_end=35098, + serialized_start=34406, + serialized_end=35091, ) @@ -9521,8 +9521,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=35250, - serialized_end=35342, + serialized_start=35243, + serialized_end=35335, ) _GETIDENTITIESTOKENBALANCESREQUEST = _descriptor.Descriptor( @@ -9557,8 +9557,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35101, - serialized_end=35353, + serialized_start=35094, + serialized_end=35346, ) @@ -9601,8 +9601,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35821, - serialized_end=35903, + serialized_start=35814, + serialized_end=35896, ) _GETIDENTITIESTOKENBALANCESRESPONSE_GETIDENTITIESTOKENBALANCESRESPONSEV0_IDENTITYTOKENBALANCES = _descriptor.Descriptor( @@ -9632,8 +9632,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=35906, - serialized_end=36089, + serialized_start=35899, + serialized_end=36082, ) _GETIDENTITIESTOKENBALANCESRESPONSE_GETIDENTITIESTOKENBALANCESRESPONSEV0 = _descriptor.Descriptor( @@ -9682,8 +9682,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35509, - serialized_end=36099, + serialized_start=35502, + serialized_end=36092, ) _GETIDENTITIESTOKENBALANCESRESPONSE = _descriptor.Descriptor( @@ -9718,8 +9718,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=35356, - serialized_end=36110, + serialized_start=35349, + serialized_end=36103, ) @@ -9764,8 +9764,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36247, - serialized_end=36334, + serialized_start=36240, + serialized_end=36327, ) _GETIDENTITYTOKENINFOSREQUEST = _descriptor.Descriptor( @@ -9800,8 +9800,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36113, - serialized_end=36345, + serialized_start=36106, + serialized_end=36338, ) @@ -9832,8 +9832,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36759, - serialized_end=36799, + serialized_start=36752, + serialized_end=36792, ) _GETIDENTITYTOKENINFOSRESPONSE_GETIDENTITYTOKENINFOSRESPONSEV0_TOKENINFOENTRY = _descriptor.Descriptor( @@ -9875,8 +9875,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36802, - serialized_end=36978, + serialized_start=36795, + serialized_end=36971, ) _GETIDENTITYTOKENINFOSRESPONSE_GETIDENTITYTOKENINFOSRESPONSEV0_TOKENINFOS = _descriptor.Descriptor( @@ -9906,8 +9906,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36981, - serialized_end=37119, + serialized_start=36974, + serialized_end=37112, ) _GETIDENTITYTOKENINFOSRESPONSE_GETIDENTITYTOKENINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -9956,8 +9956,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36486, - serialized_end=37129, + serialized_start=36479, + serialized_end=37122, ) _GETIDENTITYTOKENINFOSRESPONSE = _descriptor.Descriptor( @@ -9992,8 +9992,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=36348, - serialized_end=37140, + serialized_start=36341, + serialized_end=37133, ) @@ -10038,8 +10038,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=37283, - serialized_end=37372, + serialized_start=37276, + serialized_end=37365, ) _GETIDENTITIESTOKENINFOSREQUEST = _descriptor.Descriptor( @@ -10074,8 +10074,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37143, - serialized_end=37383, + serialized_start=37136, + serialized_end=37376, ) @@ -10106,8 +10106,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=36759, - serialized_end=36799, + serialized_start=36752, + serialized_end=36792, ) _GETIDENTITIESTOKENINFOSRESPONSE_GETIDENTITIESTOKENINFOSRESPONSEV0_TOKENINFOENTRY = _descriptor.Descriptor( @@ -10149,8 +10149,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37870, - serialized_end=38053, + serialized_start=37863, + serialized_end=38046, ) _GETIDENTITIESTOKENINFOSRESPONSE_GETIDENTITIESTOKENINFOSRESPONSEV0_IDENTITYTOKENINFOS = _descriptor.Descriptor( @@ -10180,8 +10180,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=38056, - serialized_end=38207, + serialized_start=38049, + serialized_end=38200, ) _GETIDENTITIESTOKENINFOSRESPONSE_GETIDENTITIESTOKENINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -10230,8 +10230,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37530, - serialized_end=38217, + serialized_start=37523, + serialized_end=38210, ) _GETIDENTITIESTOKENINFOSRESPONSE = _descriptor.Descriptor( @@ -10266,8 +10266,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=37386, - serialized_end=38228, + serialized_start=37379, + serialized_end=38221, ) @@ -10305,8 +10305,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=38350, - serialized_end=38411, + serialized_start=38343, + serialized_end=38404, ) _GETTOKENSTATUSESREQUEST = _descriptor.Descriptor( @@ -10341,8 +10341,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38231, - serialized_end=38422, + serialized_start=38224, + serialized_end=38415, ) @@ -10385,8 +10385,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38812, - serialized_end=38880, + serialized_start=38805, + serialized_end=38873, ) _GETTOKENSTATUSESRESPONSE_GETTOKENSTATUSESRESPONSEV0_TOKENSTATUSES = _descriptor.Descriptor( @@ -10416,8 +10416,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=38883, - serialized_end=39019, + serialized_start=38876, + serialized_end=39012, ) _GETTOKENSTATUSESRESPONSE_GETTOKENSTATUSESRESPONSEV0 = _descriptor.Descriptor( @@ -10466,8 +10466,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38548, - serialized_end=39029, + serialized_start=38541, + serialized_end=39022, ) _GETTOKENSTATUSESRESPONSE = _descriptor.Descriptor( @@ -10502,8 +10502,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=38425, - serialized_end=39040, + serialized_start=38418, + serialized_end=39033, ) @@ -10541,8 +10541,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39198, - serialized_end=39271, + serialized_start=39191, + serialized_end=39264, ) _GETTOKENDIRECTPURCHASEPRICESREQUEST = _descriptor.Descriptor( @@ -10577,8 +10577,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39043, - serialized_end=39282, + serialized_start=39036, + serialized_end=39275, ) @@ -10616,8 +10616,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39772, - serialized_end=39823, + serialized_start=39765, + serialized_end=39816, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0_PRICINGSCHEDULE = _descriptor.Descriptor( @@ -10647,8 +10647,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39826, - serialized_end=39993, + serialized_start=39819, + serialized_end=39986, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0_TOKENDIRECTPURCHASEPRICEENTRY = _descriptor.Descriptor( @@ -10697,8 +10697,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39996, - serialized_end=40224, + serialized_start=39989, + serialized_end=40217, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0_TOKENDIRECTPURCHASEPRICES = _descriptor.Descriptor( @@ -10728,8 +10728,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=40227, - serialized_end=40427, + serialized_start=40220, + serialized_end=40420, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE_GETTOKENDIRECTPURCHASEPRICESRESPONSEV0 = _descriptor.Descriptor( @@ -10778,8 +10778,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39444, - serialized_end=40437, + serialized_start=39437, + serialized_end=40430, ) _GETTOKENDIRECTPURCHASEPRICESRESPONSE = _descriptor.Descriptor( @@ -10814,8 +10814,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=39285, - serialized_end=40448, + serialized_start=39278, + serialized_end=40441, ) @@ -10853,8 +10853,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=40582, - serialized_end=40646, + serialized_start=40575, + serialized_end=40639, ) _GETTOKENCONTRACTINFOREQUEST = _descriptor.Descriptor( @@ -10889,8 +10889,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40451, - serialized_end=40657, + serialized_start=40444, + serialized_end=40650, ) @@ -10928,8 +10928,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=41069, - serialized_end=41146, + serialized_start=41062, + serialized_end=41139, ) _GETTOKENCONTRACTINFORESPONSE_GETTOKENCONTRACTINFORESPONSEV0 = _descriptor.Descriptor( @@ -10978,8 +10978,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40795, - serialized_end=41156, + serialized_start=40788, + serialized_end=41149, ) _GETTOKENCONTRACTINFORESPONSE = _descriptor.Descriptor( @@ -11014,8 +11014,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=40660, - serialized_end=41167, + serialized_start=40653, + serialized_end=41160, ) @@ -11070,8 +11070,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41600, - serialized_end=41754, + serialized_start=41593, + serialized_end=41747, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSREQUEST_GETTOKENPREPROGRAMMEDDISTRIBUTIONSREQUESTV0 = _descriptor.Descriptor( @@ -11132,8 +11132,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41344, - serialized_end=41782, + serialized_start=41337, + serialized_end=41775, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSREQUEST = _descriptor.Descriptor( @@ -11168,8 +11168,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41170, - serialized_end=41793, + serialized_start=41163, + serialized_end=41786, ) @@ -11207,8 +11207,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42304, - serialized_end=42366, + serialized_start=42297, + serialized_end=42359, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE_GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSEV0_TOKENTIMEDDISTRIBUTIONENTRY = _descriptor.Descriptor( @@ -11245,8 +11245,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42369, - serialized_end=42581, + serialized_start=42362, + serialized_end=42574, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE_GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSEV0_TOKENDISTRIBUTIONS = _descriptor.Descriptor( @@ -11276,8 +11276,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42584, - serialized_end=42779, + serialized_start=42577, + serialized_end=42772, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE_GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSEV0 = _descriptor.Descriptor( @@ -11326,8 +11326,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41974, - serialized_end=42789, + serialized_start=41967, + serialized_end=42782, ) _GETTOKENPREPROGRAMMEDDISTRIBUTIONSRESPONSE = _descriptor.Descriptor( @@ -11362,8 +11362,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=41796, - serialized_end=42800, + serialized_start=41789, + serialized_end=42793, ) @@ -11401,8 +11401,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=42989, - serialized_end=43062, + serialized_start=42982, + serialized_end=43055, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMREQUEST_GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMREQUESTV0 = _descriptor.Descriptor( @@ -11458,8 +11458,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43065, - serialized_end=43306, + serialized_start=43058, + serialized_end=43299, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMREQUEST = _descriptor.Descriptor( @@ -11494,8 +11494,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=42803, - serialized_end=43317, + serialized_start=42796, + serialized_end=43310, ) @@ -11552,8 +11552,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43838, - serialized_end=43958, + serialized_start=43831, + serialized_end=43951, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMRESPONSE_GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMRESPONSEV0 = _descriptor.Descriptor( @@ -11602,8 +11602,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43510, - serialized_end=43968, + serialized_start=43503, + serialized_end=43961, ) _GETTOKENPERPETUALDISTRIBUTIONLASTCLAIMRESPONSE = _descriptor.Descriptor( @@ -11638,8 +11638,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43320, - serialized_end=43979, + serialized_start=43313, + serialized_end=43972, ) @@ -11677,8 +11677,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=44110, - serialized_end=44173, + serialized_start=44103, + serialized_end=44166, ) _GETTOKENTOTALSUPPLYREQUEST = _descriptor.Descriptor( @@ -11713,8 +11713,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=43982, - serialized_end=44184, + serialized_start=43975, + serialized_end=44177, ) @@ -11759,8 +11759,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=44605, - serialized_end=44725, + serialized_start=44598, + serialized_end=44718, ) _GETTOKENTOTALSUPPLYRESPONSE_GETTOKENTOTALSUPPLYRESPONSEV0 = _descriptor.Descriptor( @@ -11809,8 +11809,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44319, - serialized_end=44735, + serialized_start=44312, + serialized_end=44728, ) _GETTOKENTOTALSUPPLYRESPONSE = _descriptor.Descriptor( @@ -11845,8 +11845,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44187, - serialized_end=44746, + serialized_start=44180, + serialized_end=44739, ) @@ -11891,8 +11891,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=44856, - serialized_end=44948, + serialized_start=44849, + serialized_end=44941, ) _GETGROUPINFOREQUEST = _descriptor.Descriptor( @@ -11927,8 +11927,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44749, - serialized_end=44959, + serialized_start=44742, + serialized_end=44952, ) @@ -11966,8 +11966,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45317, - serialized_end=45369, + serialized_start=45310, + serialized_end=45362, ) _GETGROUPINFORESPONSE_GETGROUPINFORESPONSEV0_GROUPINFOENTRY = _descriptor.Descriptor( @@ -12004,8 +12004,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45372, - serialized_end=45524, + serialized_start=45365, + serialized_end=45517, ) _GETGROUPINFORESPONSE_GETGROUPINFORESPONSEV0_GROUPINFO = _descriptor.Descriptor( @@ -12040,8 +12040,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45527, - serialized_end=45665, + serialized_start=45520, + serialized_end=45658, ) _GETGROUPINFORESPONSE_GETGROUPINFORESPONSEV0 = _descriptor.Descriptor( @@ -12090,8 +12090,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45073, - serialized_end=45675, + serialized_start=45066, + serialized_end=45668, ) _GETGROUPINFORESPONSE = _descriptor.Descriptor( @@ -12126,8 +12126,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=44962, - serialized_end=45686, + serialized_start=44955, + serialized_end=45679, ) @@ -12165,8 +12165,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45799, - serialized_end=45916, + serialized_start=45792, + serialized_end=45909, ) _GETGROUPINFOSREQUEST_GETGROUPINFOSREQUESTV0 = _descriptor.Descriptor( @@ -12227,8 +12227,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45919, - serialized_end=46171, + serialized_start=45912, + serialized_end=46164, ) _GETGROUPINFOSREQUEST = _descriptor.Descriptor( @@ -12263,8 +12263,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=45689, - serialized_end=46182, + serialized_start=45682, + serialized_end=46175, ) @@ -12302,8 +12302,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=45317, - serialized_end=45369, + serialized_start=45310, + serialized_end=45362, ) _GETGROUPINFOSRESPONSE_GETGROUPINFOSRESPONSEV0_GROUPPOSITIONINFOENTRY = _descriptor.Descriptor( @@ -12347,8 +12347,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=46603, - serialized_end=46798, + serialized_start=46596, + serialized_end=46791, ) _GETGROUPINFOSRESPONSE_GETGROUPINFOSRESPONSEV0_GROUPINFOS = _descriptor.Descriptor( @@ -12378,8 +12378,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=46801, - serialized_end=46931, + serialized_start=46794, + serialized_end=46924, ) _GETGROUPINFOSRESPONSE_GETGROUPINFOSRESPONSEV0 = _descriptor.Descriptor( @@ -12428,8 +12428,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46299, - serialized_end=46941, + serialized_start=46292, + serialized_end=46934, ) _GETGROUPINFOSRESPONSE = _descriptor.Descriptor( @@ -12464,8 +12464,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46185, - serialized_end=46952, + serialized_start=46178, + serialized_end=46945, ) @@ -12503,8 +12503,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=47071, - serialized_end=47147, + serialized_start=47064, + serialized_end=47140, ) _GETGROUPACTIONSREQUEST_GETGROUPACTIONSREQUESTV0 = _descriptor.Descriptor( @@ -12579,8 +12579,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47150, - serialized_end=47478, + serialized_start=47143, + serialized_end=47471, ) _GETGROUPACTIONSREQUEST = _descriptor.Descriptor( @@ -12616,8 +12616,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=46955, - serialized_end=47529, + serialized_start=46948, + serialized_end=47522, ) @@ -12667,8 +12667,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47911, - serialized_end=48002, + serialized_start=47904, + serialized_end=47995, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_BURNEVENT = _descriptor.Descriptor( @@ -12717,8 +12717,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48004, - serialized_end=48095, + serialized_start=47997, + serialized_end=48088, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_FREEZEEVENT = _descriptor.Descriptor( @@ -12760,8 +12760,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48097, - serialized_end=48171, + serialized_start=48090, + serialized_end=48164, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UNFREEZEEVENT = _descriptor.Descriptor( @@ -12803,8 +12803,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48173, - serialized_end=48249, + serialized_start=48166, + serialized_end=48242, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_DESTROYFROZENFUNDSEVENT = _descriptor.Descriptor( @@ -12853,8 +12853,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48251, - serialized_end=48353, + serialized_start=48244, + serialized_end=48346, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_SHAREDENCRYPTEDNOTE = _descriptor.Descriptor( @@ -12898,8 +12898,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=48355, - serialized_end=48455, + serialized_start=48348, + serialized_end=48448, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_PERSONALENCRYPTEDNOTE = _descriptor.Descriptor( @@ -12943,8 +12943,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=48457, - serialized_end=48580, + serialized_start=48450, + serialized_end=48573, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_EMERGENCYACTIONEVENT = _descriptor.Descriptor( @@ -12987,8 +12987,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48583, - serialized_end=48816, + serialized_start=48576, + serialized_end=48809, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_TOKENCONFIGUPDATEEVENT = _descriptor.Descriptor( @@ -13030,8 +13030,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48818, - serialized_end=48918, + serialized_start=48811, + serialized_end=48911, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UPDATEDIRECTPURCHASEPRICEEVENT_PRICEFORQUANTITY = _descriptor.Descriptor( @@ -13068,8 +13068,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=39772, - serialized_end=39823, + serialized_start=39765, + serialized_end=39816, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UPDATEDIRECTPURCHASEPRICEEVENT_PRICINGSCHEDULE = _descriptor.Descriptor( @@ -13099,8 +13099,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=49210, - serialized_end=49382, + serialized_start=49203, + serialized_end=49375, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_UPDATEDIRECTPURCHASEPRICEEVENT = _descriptor.Descriptor( @@ -13154,8 +13154,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=48921, - serialized_end=49407, + serialized_start=48914, + serialized_end=49400, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_GROUPACTIONEVENT = _descriptor.Descriptor( @@ -13204,8 +13204,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=49410, - serialized_end=49790, + serialized_start=49403, + serialized_end=49783, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_DOCUMENTEVENT = _descriptor.Descriptor( @@ -13240,8 +13240,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=49793, - serialized_end=49932, + serialized_start=49786, + serialized_end=49925, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_DOCUMENTCREATEEVENT = _descriptor.Descriptor( @@ -13271,8 +13271,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=49934, - serialized_end=49981, + serialized_start=49927, + serialized_end=49974, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_CONTRACTUPDATEEVENT = _descriptor.Descriptor( @@ -13302,8 +13302,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=49983, - serialized_end=50030, + serialized_start=49976, + serialized_end=50023, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_CONTRACTEVENT = _descriptor.Descriptor( @@ -13338,8 +13338,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=50033, - serialized_end=50172, + serialized_start=50026, + serialized_end=50165, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_TOKENEVENT = _descriptor.Descriptor( @@ -13423,8 +13423,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=50175, - serialized_end=51152, + serialized_start=50168, + serialized_end=51145, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_GROUPACTIONENTRY = _descriptor.Descriptor( @@ -13461,8 +13461,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=51155, - serialized_end=51302, + serialized_start=51148, + serialized_end=51295, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0_GROUPACTIONS = _descriptor.Descriptor( @@ -13492,8 +13492,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=51305, - serialized_end=51437, + serialized_start=51298, + serialized_end=51430, ) _GETGROUPACTIONSRESPONSE_GETGROUPACTIONSRESPONSEV0 = _descriptor.Descriptor( @@ -13542,8 +13542,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47652, - serialized_end=51447, + serialized_start=47645, + serialized_end=51440, ) _GETGROUPACTIONSRESPONSE = _descriptor.Descriptor( @@ -13578,8 +13578,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=47532, - serialized_end=51458, + serialized_start=47525, + serialized_end=51451, ) @@ -13638,8 +13638,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=51596, - serialized_end=51802, + serialized_start=51589, + serialized_end=51795, ) _GETGROUPACTIONSIGNERSREQUEST = _descriptor.Descriptor( @@ -13675,8 +13675,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=51461, - serialized_end=51853, + serialized_start=51454, + serialized_end=51846, ) @@ -13714,8 +13714,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=52285, - serialized_end=52338, + serialized_start=52278, + serialized_end=52331, ) _GETGROUPACTIONSIGNERSRESPONSE_GETGROUPACTIONSIGNERSRESPONSEV0_GROUPACTIONSIGNERS = _descriptor.Descriptor( @@ -13745,8 +13745,8 @@ extension_ranges=[], oneofs=[ ], - serialized_start=52341, - serialized_end=52486, + serialized_start=52334, + serialized_end=52479, ) _GETGROUPACTIONSIGNERSRESPONSE_GETGROUPACTIONSIGNERSRESPONSEV0 = _descriptor.Descriptor( @@ -13795,8 +13795,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=51994, - serialized_end=52496, + serialized_start=51987, + serialized_end=52489, ) _GETGROUPACTIONSIGNERSRESPONSE = _descriptor.Descriptor( @@ -13831,8 +13831,8 @@ create_key=_descriptor._internal_create_key, fields=[]), ], - serialized_start=51856, - serialized_end=52507, + serialized_start=51849, + serialized_end=52500, ) _PLATFORMSUBSCRIPTIONREQUEST_PLATFORMSUBSCRIPTIONREQUESTV0.fields_by_name['filter'].message_type = _PLATFORMFILTERV0 @@ -17773,8 +17773,8 @@ index=0, serialized_options=None, create_key=_descriptor._internal_create_key, - serialized_start=52602, - serialized_end=59630, + serialized_start=52595, + serialized_end=59623, methods=[ _descriptor.MethodDescriptor( name='broadcastStateTransition', diff --git a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts index 4f6ed90cd1c..140d21b8c8e 100644 --- a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts +++ b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.d.ts @@ -83,8 +83,8 @@ export namespace PlatformSubscriptionResponse { } export class PlatformSubscriptionResponseV0 extends jspb.Message { - getClientSubscriptionId(): string; - setClientSubscriptionId(value: string): void; + getSubscriptionId(): number; + setSubscriptionId(value: number): void; hasEvent(): boolean; clearEvent(): void; @@ -103,7 +103,7 @@ export namespace PlatformSubscriptionResponse { export namespace PlatformSubscriptionResponseV0 { export type AsObject = { - clientSubscriptionId: string, + subscriptionId: number, event?: PlatformEventV0.AsObject, } } diff --git a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js index cc1993357ad..7db02826598 100644 --- a/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js +++ b/packages/dapi-grpc/clients/platform/v0/web/platform_pb.js @@ -7634,7 +7634,7 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptio */ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.toObject = function(includeInstance, msg) { var f, obj = { - clientSubscriptionId: jspb.Message.getFieldWithDefault(msg, 1, ""), + subscriptionId: jspb.Message.getFieldWithDefault(msg, 1, 0), event: (f = msg.getEvent()) && proto.org.dash.platform.dapi.v0.PlatformEventV0.toObject(includeInstance, f) }; @@ -7673,8 +7673,8 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptio var field = reader.getFieldNumber(); switch (field) { case 1: - var value = /** @type {string} */ (reader.readString()); - msg.setClientSubscriptionId(value); + var value = /** @type {number} */ (reader.readUint64()); + msg.setSubscriptionId(value); break; case 2: var value = new proto.org.dash.platform.dapi.v0.PlatformEventV0; @@ -7710,9 +7710,9 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptio */ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.serializeBinaryToWriter = function(message, writer) { var f = undefined; - f = message.getClientSubscriptionId(); - if (f.length > 0) { - writer.writeString( + f = message.getSubscriptionId(); + if (f !== 0) { + writer.writeUint64( 1, f ); @@ -7729,20 +7729,20 @@ proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptio /** - * optional string client_subscription_id = 1; - * @return {string} + * optional uint64 subscription_id = 1; + * @return {number} */ -proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.getClientSubscriptionId = function() { - return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, "")); +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.getSubscriptionId = function() { + return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); }; /** - * @param {string} value + * @param {number} value * @return {!proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0} returns this */ -proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.setClientSubscriptionId = function(value) { - return jspb.Message.setProto3StringField(this, 1, value); +proto.org.dash.platform.dapi.v0.PlatformSubscriptionResponse.PlatformSubscriptionResponseV0.prototype.setSubscriptionId = function(value) { + return jspb.Message.setProto3IntField(this, 1, value); }; diff --git a/packages/dapi-grpc/protos/platform/v0/platform.proto b/packages/dapi-grpc/protos/platform/v0/platform.proto index 7c53bc998ca..8c6bdd2074b 100644 --- a/packages/dapi-grpc/protos/platform/v0/platform.proto +++ b/packages/dapi-grpc/protos/platform/v0/platform.proto @@ -31,7 +31,7 @@ message PlatformSubscriptionResponse { message PlatformFilterV0 { // Include all events generated by the Platform; experimental message AllEvents{} - // Notify about every Platform (Tenderdash) block that get committed (mined) + // Notify about every Platform (Tenderdash) block that gets committed (mined) message BlockCommitted{} // Filter for StateTransitionResult events, by state transition hash diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index 81d62ba44ff..10e86508e99 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -1404,14 +1404,6 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) options.platform.dapi.rsDapi.docker.image = defaultConfig.get('platform.dapi.rsDapi.docker.image'); } - if (!options.platform?.dapi) { - return; - } - - if (!options.platform.dapi.rsDapi) { - options.platform.dapi.rsDapi = {}; - } - // Normalize rsDapi timeout structure and remove redundant legacy fields const existingTimeouts = options.platform.dapi.rsDapi.timeouts ?? options.platform.dapi.api?.timeouts; From 3148d08abcb80196f4da8e26d94233240fc62af2 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 13:53:36 +0100 Subject: [PATCH 35/40] chore: clippy --- packages/rs-drive-abci/src/query/service.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/rs-drive-abci/src/query/service.rs b/packages/rs-drive-abci/src/query/service.rs index 07a54f5f9c3..047460e8aa9 100644 --- a/packages/rs-drive-abci/src/query/service.rs +++ b/packages/rs-drive-abci/src/query/service.rs @@ -967,7 +967,7 @@ impl PlatformService for QueryService { Some(Ok(event)) => { let response = PlatformSubscriptionResponse { version: Some(ResponseVersion::V0(PlatformSubscriptionResponseV0 { - subscription_id: subscription_id.clone(), + subscription_id, event: Some(event), })), }; From 2293471c5b6fbe3113217cd99c5b82cb4e6baef2 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:05:27 +0100 Subject: [PATCH 36/40] fix: envoy config broken --- .../configs/getConfigFileMigrationsFactory.js | 29 +++++++++---------- packages/dashmate/docs/config/dapi.md | 6 ++-- .../templates/platform/gateway/envoy.yaml.dot | 5 ++++ 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index 10e86508e99..74ec9a1f2c1 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -1376,23 +1376,18 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) } const { rsDapi } = options.platform.dapi; + const defaultTimeouts = defaultConfig.get('platform.dapi.rsDapi.timeouts'); - // Carry over wait-for-ST timeout before dropping legacy API section - if (options.platform.dapi.api) { - const { waitForStResultTimeout } = options.platform.dapi.api; + let legacyWaitForStResultTimeout; + let legacyTimeouts; - if (typeof waitForStResultTimeout === 'number' - && typeof rsDapi.waitForStResultTimeout === 'undefined') { - rsDapi.waitForStResultTimeout = waitForStResultTimeout; - } + if (options.platform.dapi.api) { + legacyWaitForStResultTimeout = options.platform.dapi.api.waitForStResultTimeout; + legacyTimeouts = options.platform.dapi.api.timeouts; delete options.platform.dapi.api; } - if (typeof rsDapi.waitForStResultTimeout === 'undefined') { - rsDapi.waitForStResultTimeout = defaultConfig.get('platform.dapi.rsDapi.waitForStResultTimeout'); - } - // Align docker images with defaults if (options.platform?.drive?.abci?.docker && defaultConfig.has('platform.drive.abci.docker.image')) { @@ -1406,12 +1401,14 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) // Normalize rsDapi timeout structure and remove redundant legacy fields const existingTimeouts = options.platform.dapi.rsDapi.timeouts - ?? options.platform.dapi.api?.timeouts; + ?? legacyTimeouts; const waitForStateTransitionResult = existingTimeouts?.waitForStateTransitionResult - ?? options.platform?.dapi?.api?.waitForStResultTimeout - ?? 120000; - const subscribePlatformEvents = existingTimeouts?.subscribePlatformEvents ?? 600000; - const coreStreams = existingTimeouts?.coreStreams ?? 600000; + ?? legacyWaitForStResultTimeout + ?? defaultTimeouts.waitForStateTransitionResult; + const subscribePlatformEvents = existingTimeouts?.subscribePlatformEvents + ?? defaultTimeouts.subscribePlatformEvents; + const coreStreams = existingTimeouts?.coreStreams + ?? defaultTimeouts.coreStreams; options.platform.dapi.rsDapi.timeouts = { waitForStateTransitionResult, diff --git a/packages/dashmate/docs/config/dapi.md b/packages/dashmate/docs/config/dapi.md index 0b0e01aa0f4..eefd485cf92 100644 --- a/packages/dashmate/docs/config/dapi.md +++ b/packages/dashmate/docs/config/dapi.md @@ -39,6 +39,6 @@ Dashmate offsets the default metrics port per preset (mainnet 9091, testnet 1909 | Option | Description | Default | Example | |--------|-------------|---------|---------| -| `platform.dapi.rsDapi.waitForStResultTimeout` | Timeout for state transition results (ms) | `120000` | `240000` | - -This timeout controls how long rs-dapi waits for Drive to report the outcome of a state transition before returning a timeout error to the client. +| `platform.dapi.rsDapi.timeouts.waitForStateTransitionResult` | How long rs-dapi waits for Drive to return the outcome of a state transition before timing out (ms) | `120000` | `240000` | +| `platform.dapi.rsDapi.timeouts.subscribePlatformEvents` | Maximum duration for a platform events subscription stream before rs-dapi closes it (ms) | `600000` | `900000` | +| `platform.dapi.rsDapi.timeouts.coreStreams` | Maximum duration for Core streaming subscriptions (e.g., block headers) before rs-dapi closes them (ms) | `600000` | `900000` | diff --git a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot index 7ba70b4140b..6f10333679c 100644 --- a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot +++ b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot @@ -1,3 +1,8 @@ +{{ const formatTimeout = (value) => `${Math.max(1, Math.ceil((Number(value ?? 0) + 1000) / 1000))}s`; }} +{{ const rsDapiTimeouts = it.platform?.dapi?.rsDapi?.timeouts ?? {}; }} +{{ const coreStreamsTimeout = formatTimeout(rsDapiTimeouts.coreStreams ?? 0); }} +{{ const subscribePlatformEventsTimeout = formatTimeout(rsDapiTimeouts.subscribePlatformEvents ?? 0); }} +{{ const waitForStateTransitionTimeout = formatTimeout(rsDapiTimeouts.waitForStateTransitionResult ?? 0); }} !ignore filters: &filters - name: envoy.http_connection_manager typed_config: From 2b7e09fc15baf93c942381fcb580f71d93aa4698 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:10:50 +0100 Subject: [PATCH 37/40] chore: streaming grace period 5s in envoy --- packages/dashmate/templates/platform/gateway/envoy.yaml.dot | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot index 6f10333679c..b94e50f2d97 100644 --- a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot +++ b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot @@ -1,4 +1,4 @@ -{{ const formatTimeout = (value) => `${Math.max(1, Math.ceil((Number(value ?? 0) + 1000) / 1000))}s`; }} +{{ const formatTimeout = (value) => `${Math.max(1, Math.ceil((Number(value ?? 0) + 5000) / 1000))}s`; }} {{ const rsDapiTimeouts = it.platform?.dapi?.rsDapi?.timeouts ?? {}; }} {{ const coreStreamsTimeout = formatTimeout(rsDapiTimeouts.coreStreams ?? 0); }} {{ const subscribePlatformEventsTimeout = formatTimeout(rsDapiTimeouts.subscribePlatformEvents ?? 0); }} From 5d129f9e348c71b64ac3590b780e5eacf72b7121 Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:16:42 +0100 Subject: [PATCH 38/40] feat: stream idle timeout normalized to 300s --- packages/dashmate/docs/services/gateway.md | 1 + .../templates/platform/gateway/envoy.yaml.dot | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/packages/dashmate/docs/services/gateway.md b/packages/dashmate/docs/services/gateway.md index 114c8f2c01d..92b29d5792e 100644 --- a/packages/dashmate/docs/services/gateway.md +++ b/packages/dashmate/docs/services/gateway.md @@ -109,6 +109,7 @@ Dashmate exposes per-endpoint timeout controls that are shared between rs-dapi a - Core streaming endpoints: derived from `platform.dapi.rsDapi.timeouts.coreStreams` (default 600 000 ms) - waitForStateTransitionResult endpoint: derived from `platform.dapi.rsDapi.timeouts.waitForStateTransitionResult` (default 120 000 ms) - subscribePlatformEvents endpoint: derived from `platform.dapi.rsDapi.timeouts.subscribePlatformEvents` (default 600 000 ms) + - All streaming routes share a fixed Envoy `idle_timeout` of 300s so that connections can stay open while rs-dapi manages its own deadlines. ### Circuit Breaking diff --git a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot index b94e50f2d97..8fdc955dc15 100644 --- a/packages/dashmate/templates/platform/gateway/envoy.yaml.dot +++ b/packages/dashmate/templates/platform/gateway/envoy.yaml.dot @@ -1,5 +1,6 @@ {{ const formatTimeout = (value) => `${Math.max(1, Math.ceil((Number(value ?? 0) + 5000) / 1000))}s`; }} {{ const rsDapiTimeouts = it.platform?.dapi?.rsDapi?.timeouts ?? {}; }} +{{ const streamIdleTimeout = '300s'; }} {{ const coreStreamsTimeout = formatTimeout(rsDapiTimeouts.coreStreams ?? 0); }} {{ const subscribePlatformEventsTimeout = formatTimeout(rsDapiTimeouts.subscribePlatformEvents ?? 0); }} {{ const waitForStateTransitionTimeout = formatTimeout(rsDapiTimeouts.waitForStateTransitionResult ?? 0); }} @@ -17,7 +18,7 @@ # A single HTTP connection timeout. max_connection_duration: 600s # How long to keep the connection alive when there are no streams (requests). - idle_timeout: 300s + idle_timeout: {{= streamIdleTimeout }} # Request (stream) timeout. # HTTP2 support multiple streams (requests) per connection. # For HTTP1 it applies for single request. @@ -37,7 +38,7 @@ # It means N requests can be in flight at the same time on a single connection. max_concurrent_streams: {{= it.platform.gateway.listeners.dapiAndDrive.http2.maxConcurrentStreams }} # Stream idle timeout - stream_idle_timeout: 15s + stream_idle_timeout: {{= streamIdleTimeout }} {{? it.platform.gateway.log.accessLogs }} access_log: {{~ it.platform.gateway.log.accessLogs :log }} @@ -121,7 +122,7 @@ prefix: "/org.dash.platform.dapi.v0.Core/subscribeTo" route: cluster: rs_dapi - idle_timeout: {{= coreStreamsTimeout }} + idle_timeout: {{= streamIdleTimeout }} # Upstream response timeout timeout: {{= coreStreamsTimeout }} max_stream_duration: @@ -140,7 +141,7 @@ path: "/org.dash.platform.dapi.v0.Platform/subscribePlatformEvents" route: cluster: rs_dapi - idle_timeout: {{= subscribePlatformEventsTimeout }} + idle_timeout: {{= streamIdleTimeout }} # Upstream response timeout timeout: {{= subscribePlatformEventsTimeout }} max_stream_duration: @@ -152,7 +153,7 @@ path: "/org.dash.platform.dapi.v0.Platform/waitForStateTransitionResult" route: cluster: rs_dapi - idle_timeout: {{= waitForStateTransitionTimeout }} + idle_timeout: {{= streamIdleTimeout }} # Upstream response timeout timeout: {{= waitForStateTransitionTimeout }} max_stream_duration: From 97b1b7e46f62955e18c4c40b80d4cc513f6e60dd Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:20:28 +0100 Subject: [PATCH 39/40] chore: cleanup after rabbit feedback --- .../dashmate/configs/getConfigFileMigrationsFactory.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/packages/dashmate/configs/getConfigFileMigrationsFactory.js b/packages/dashmate/configs/getConfigFileMigrationsFactory.js index 74ec9a1f2c1..5bcb23972d7 100644 --- a/packages/dashmate/configs/getConfigFileMigrationsFactory.js +++ b/packages/dashmate/configs/getConfigFileMigrationsFactory.js @@ -1420,14 +1420,6 @@ export default function getConfigFileMigrationsFactory(homeDir, defaultConfigs) delete rsDapi.waitForStResultTimeout; } - if (options.platform?.dapi?.api?.timeouts) { - delete options.platform.dapi.api.timeouts; - } - - if (typeof options.platform?.dapi?.api?.waitForStResultTimeout !== 'undefined') { - delete options.platform.dapi.api.waitForStResultTimeout; - } - if (options.platform?.gateway?.listeners?.dapiAndDrive) { delete options.platform.gateway.listeners.dapiAndDrive.waitForStResultTimeout; } From ddb66d7a234b73767820ed0c19cb2a0862dda6ba Mon Sep 17 00:00:00 2001 From: Lukasz Klimek <842586+lklimek@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:30:08 +0100 Subject: [PATCH 40/40] chore: rabbit feedback --- packages/dapi-grpc/protos/platform/v0/platform.proto | 2 +- packages/rs-drive-abci/src/query/service.rs | 10 ++++++++-- packages/rs-sdk/src/platform/events.rs | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/dapi-grpc/protos/platform/v0/platform.proto b/packages/dapi-grpc/protos/platform/v0/platform.proto index 8c6bdd2074b..8ed8b26f718 100644 --- a/packages/dapi-grpc/protos/platform/v0/platform.proto +++ b/packages/dapi-grpc/protos/platform/v0/platform.proto @@ -12,7 +12,7 @@ message PlatformSubscriptionRequest { PlatformFilterV0 filter = 1; // Interval in seconds between keepalive events (min 25, max 300, 0 disables // keepalive). - uint32 keepalive = 2; + uint32 keepalive_secs = 2; } oneof version { PlatformSubscriptionRequestV0 v0 = 1; } } diff --git a/packages/rs-drive-abci/src/query/service.rs b/packages/rs-drive-abci/src/query/service.rs index 047460e8aa9..1f68c95f3b8 100644 --- a/packages/rs-drive-abci/src/query/service.rs +++ b/packages/rs-drive-abci/src/query/service.rs @@ -891,7 +891,7 @@ impl PlatformService for QueryService { } }; - let keepalive = req_v0.keepalive; + let keepalive = req_v0.keepalive_secs; let filter = req_v0.filter.unwrap_or_default(); if filter.kind.is_none() { tracing::warn!("subscribe_platform_events: filter kind is not specified"); @@ -1014,7 +1014,13 @@ impl PlatformService for QueryService { "subscribe_platform_events: event stream completed" ); }); - self.workers.lock().unwrap().push(worker); + + { + let mut workers = self.workers.lock().unwrap(); + workers.push(worker); + // Clean up finished workers to prevent memory leak + workers.retain(|h| !h.is_finished()); + } Ok(Response::new(ReceiverStream::new(rx))) } diff --git a/packages/rs-sdk/src/platform/events.rs b/packages/rs-sdk/src/platform/events.rs index 32f1c56c58c..b3dcc1ef4d9 100644 --- a/packages/rs-sdk/src/platform/events.rs +++ b/packages/rs-sdk/src/platform/events.rs @@ -41,13 +41,13 @@ impl crate::Sdk { let mut client: PlatformGrpcClient = PlatformClient::new(channel); // Keepalive should be less than the timeout to avoid unintentional disconnects. - let keepalive = (settings.timeout.saturating_sub(Duration::from_secs(5))) + let keepalive_secs = (settings.timeout.saturating_sub(Duration::from_secs(5))) .as_secs() .clamp(25, 300) as u32; let request = PlatformSubscriptionRequest { version: Some(RequestVersion::V0(PlatformSubscriptionRequestV0 { filter: Some(filter), - keepalive, + keepalive_secs, })), };