use neutron_std_derive::CosmwasmExt;
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(
Clone,
PartialEq,
Eq,
::prost::Message,
::serde::Serialize,
::serde::Deserialize,
::schemars::JsonSchema,
CosmwasmExt,
)]
#[proto_message(type_url = "/neutron.harpoon.HookSubscriptions")]
pub struct HookSubscriptions {
#[prost(enumeration = "HookType", tag = "1")]
#[serde(
serialize_with = "crate::serde::as_str::serialize",
deserialize_with = "crate::serde::as_str::deserialize"
)]
pub hook_type: i32,
#[prost(string, repeated, tag = "2")]
pub contract_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
#[derive(::serde::Serialize, ::serde::Deserialize, ::schemars::JsonSchema)]
pub enum HookType {
Unspecified = 0,
AfterValidatorCreated = 1,
BeforeValidatorModified = 2,
AfterValidatorRemoved = 3,
AfterValidatorBonded = 4,
AfterValidatorBeginUnbonding = 5,
BeforeDelegationCreated = 6,
BeforeDelegationSharesModified = 7,
BeforeDelegationRemoved = 8,
AfterDelegationModified = 9,
BeforeValidatorSlashed = 10,
AfterUnbondingInitiated = 11,
}
impl HookType {
pub fn as_str_name(&self) -> &'static str {
match self {
HookType::Unspecified => "HOOK_TYPE_UNSPECIFIED",
HookType::AfterValidatorCreated => "HOOK_TYPE_AFTER_VALIDATOR_CREATED",
HookType::BeforeValidatorModified => "HOOK_TYPE_BEFORE_VALIDATOR_MODIFIED",
HookType::AfterValidatorRemoved => "HOOK_TYPE_AFTER_VALIDATOR_REMOVED",
HookType::AfterValidatorBonded => "HOOK_TYPE_AFTER_VALIDATOR_BONDED",
HookType::AfterValidatorBeginUnbonding => "HOOK_TYPE_AFTER_VALIDATOR_BEGIN_UNBONDING",
HookType::BeforeDelegationCreated => "HOOK_TYPE_BEFORE_DELEGATION_CREATED",
HookType::BeforeDelegationSharesModified => {
"HOOK_TYPE_BEFORE_DELEGATION_SHARES_MODIFIED"
}
HookType::BeforeDelegationRemoved => "HOOK_TYPE_BEFORE_DELEGATION_REMOVED",
HookType::AfterDelegationModified => "HOOK_TYPE_AFTER_DELEGATION_MODIFIED",
HookType::BeforeValidatorSlashed => "HOOK_TYPE_BEFORE_VALIDATOR_SLASHED",
HookType::AfterUnbondingInitiated => "HOOK_TYPE_AFTER_UNBONDING_INITIATED",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"HOOK_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
"HOOK_TYPE_AFTER_VALIDATOR_CREATED" => Some(Self::AfterValidatorCreated),
"HOOK_TYPE_BEFORE_VALIDATOR_MODIFIED" => Some(Self::BeforeValidatorModified),
"HOOK_TYPE_AFTER_VALIDATOR_REMOVED" => Some(Self::AfterValidatorRemoved),
"HOOK_TYPE_AFTER_VALIDATOR_BONDED" => Some(Self::AfterValidatorBonded),
"HOOK_TYPE_AFTER_VALIDATOR_BEGIN_UNBONDING" => Some(Self::AfterValidatorBeginUnbonding),
"HOOK_TYPE_BEFORE_DELEGATION_CREATED" => Some(Self::BeforeDelegationCreated),
"HOOK_TYPE_BEFORE_DELEGATION_SHARES_MODIFIED" => {
Some(Self::BeforeDelegationSharesModified)
}
"HOOK_TYPE_BEFORE_DELEGATION_REMOVED" => Some(Self::BeforeDelegationRemoved),
"HOOK_TYPE_AFTER_DELEGATION_MODIFIED" => Some(Self::AfterDelegationModified),
"HOOK_TYPE_BEFORE_VALIDATOR_SLASHED" => Some(Self::BeforeValidatorSlashed),
"HOOK_TYPE_AFTER_UNBONDING_INITIATED" => Some(Self::AfterUnbondingInitiated),
_ => None,
}
}
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(
Clone,
PartialEq,
Eq,
::prost::Message,
::serde::Serialize,
::serde::Deserialize,
::schemars::JsonSchema,
CosmwasmExt,
)]
#[proto_message(type_url = "/neutron.harpoon.GenesisState")]
pub struct GenesisState {
#[prost(message, repeated, tag = "1")]
pub hook_subscriptions: ::prost::alloc::vec::Vec<HookSubscriptions>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(
Clone,
PartialEq,
Eq,
::prost::Message,
::serde::Serialize,
::serde::Deserialize,
::schemars::JsonSchema,
CosmwasmExt,
)]
#[proto_message(type_url = "/neutron.harpoon.QuerySubscribedContractsRequest")]
#[proto_query(
path = "/neutron.harpoon.Query/SubscribedContracts",
response_type = QuerySubscribedContractsResponse
)]
pub struct QuerySubscribedContractsRequest {
#[prost(enumeration = "HookType", tag = "1")]
#[serde(
serialize_with = "crate::serde::as_str::serialize",
deserialize_with = "crate::serde::as_str::deserialize"
)]
pub hook_type: i32,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(
Clone,
PartialEq,
Eq,
::prost::Message,
::serde::Serialize,
::serde::Deserialize,
::schemars::JsonSchema,
CosmwasmExt,
)]
#[proto_message(type_url = "/neutron.harpoon.QuerySubscribedContractsResponse")]
pub struct QuerySubscribedContractsResponse {
#[prost(string, repeated, tag = "1")]
pub contract_addresses: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(
Clone,
PartialEq,
Eq,
::prost::Message,
::serde::Serialize,
::serde::Deserialize,
::schemars::JsonSchema,
CosmwasmExt,
)]
#[proto_message(type_url = "/neutron.harpoon.MsgManageHookSubscription")]
pub struct MsgManageHookSubscription {
#[prost(string, tag = "1")]
pub authority: ::prost::alloc::string::String,
#[prost(message, optional, tag = "2")]
pub hook_subscription: ::core::option::Option<HookSubscription>,
}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(
Clone,
PartialEq,
Eq,
::prost::Message,
::serde::Serialize,
::serde::Deserialize,
::schemars::JsonSchema,
CosmwasmExt,
)]
#[proto_message(type_url = "/neutron.harpoon.MsgManageHookSubscriptionResponse")]
pub struct MsgManageHookSubscriptionResponse {}
#[allow(clippy::derive_partial_eq_without_eq)]
#[derive(
Clone,
PartialEq,
Eq,
::prost::Message,
::serde::Serialize,
::serde::Deserialize,
::schemars::JsonSchema,
CosmwasmExt,
)]
#[proto_message(type_url = "/neutron.harpoon.HookSubscription")]
pub struct HookSubscription {
#[prost(string, tag = "2")]
pub contract_address: ::prost::alloc::string::String,
#[prost(enumeration = "HookType", repeated, tag = "3")]
#[serde(
serialize_with = "crate::serde::as_str_vec::serialize",
deserialize_with = "crate::serde::as_str_vec::deserialize"
)]
pub hooks: ::prost::alloc::vec::Vec<i32>,
}
pub struct HarpoonQuerier<'a, Q: cosmwasm_std::CustomQuery> {
querier: &'a cosmwasm_std::QuerierWrapper<'a, Q>,
}
impl<'a, Q: cosmwasm_std::CustomQuery> HarpoonQuerier<'a, Q> {
pub fn new(querier: &'a cosmwasm_std::QuerierWrapper<'a, Q>) -> Self {
Self { querier }
}
pub fn subscribed_contracts(
&self,
hook_type: i32,
) -> Result<QuerySubscribedContractsResponse, cosmwasm_std::StdError> {
QuerySubscribedContractsRequest { hook_type }.query(self.querier)
}
}