2a98f7482d
* Remove migration code * Added function to iterate over delegation of variable type * Add unit tests * Refactored some naming and reused mix/gateway functionality * Borrow bucket instead of move * Linked with existing delegations function * Migration of left-over delegations * Remove unused imports * Put a gateway test as well, next to the mix one * Expose queries for all delegations * Change break point * Added client side calls to the new queries * Fix clippy * Added pagination and read check tests * Fix gateway test from the last commit * Test functions for (de)serialization of identity and owner (in)to storage keys * Add delegation function unit test * Feature guard import * Changed UnpackedDelegation from type to struct * Remove mutable parameter and put start_after in returned value * Made all delegations into iterator for OOM safety * Fix clippy * Add test for delegations iterator size in memory * Change map with if let for ease of read * Use DENOM instead of hardcoded value
115 lines
2.7 KiB
Rust
115 lines
2.7 KiB
Rust
// Copyright 2021 - Nym Technologies SA <contact@nymtech.net>
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
use crate::StateParams;
|
|
use crate::{Gateway, IdentityKey, MixNode};
|
|
use cosmwasm_std::Addr;
|
|
use schemars::JsonSchema;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
|
|
pub struct InstantiateMsg {}
|
|
|
|
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
|
|
#[serde(rename_all = "snake_case")]
|
|
pub enum ExecuteMsg {
|
|
BondMixnode {
|
|
mix_node: MixNode,
|
|
},
|
|
UnbondMixnode {},
|
|
BondGateway {
|
|
gateway: Gateway,
|
|
},
|
|
UnbondGateway {},
|
|
UpdateStateParams(StateParams),
|
|
|
|
DelegateToMixnode {
|
|
mix_identity: IdentityKey,
|
|
},
|
|
|
|
UndelegateFromMixnode {
|
|
mix_identity: IdentityKey,
|
|
},
|
|
|
|
DelegateToGateway {
|
|
gateway_identity: IdentityKey,
|
|
},
|
|
|
|
UndelegateFromGateway {
|
|
gateway_identity: IdentityKey,
|
|
},
|
|
|
|
RewardMixnode {
|
|
identity: IdentityKey,
|
|
// percentage value in range 0-100
|
|
uptime: u32,
|
|
},
|
|
|
|
RewardGateway {
|
|
identity: IdentityKey,
|
|
// percentage value in range 0-100
|
|
uptime: u32,
|
|
},
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
|
|
#[serde(rename_all = "snake_case")]
|
|
pub enum QueryMsg {
|
|
GetMixNodes {
|
|
limit: Option<u32>,
|
|
start_after: Option<IdentityKey>,
|
|
},
|
|
GetGateways {
|
|
start_after: Option<IdentityKey>,
|
|
limit: Option<u32>,
|
|
},
|
|
OwnsMixnode {
|
|
address: Addr,
|
|
},
|
|
OwnsGateway {
|
|
address: Addr,
|
|
},
|
|
StateParams {},
|
|
GetMixDelegations {
|
|
mix_identity: IdentityKey,
|
|
start_after: Option<Addr>,
|
|
limit: Option<u32>,
|
|
},
|
|
GetAllMixDelegations {
|
|
start_after: Option<Vec<u8>>,
|
|
limit: Option<u32>,
|
|
},
|
|
GetReverseMixDelegations {
|
|
delegation_owner: Addr,
|
|
start_after: Option<IdentityKey>,
|
|
limit: Option<u32>,
|
|
},
|
|
GetMixDelegation {
|
|
mix_identity: IdentityKey,
|
|
address: Addr,
|
|
},
|
|
GetGatewayDelegations {
|
|
gateway_identity: IdentityKey,
|
|
start_after: Option<Addr>,
|
|
limit: Option<u32>,
|
|
},
|
|
GetAllGatewayDelegations {
|
|
start_after: Option<Vec<u8>>,
|
|
limit: Option<u32>,
|
|
},
|
|
GetReverseGatewayDelegations {
|
|
delegation_owner: Addr,
|
|
start_after: Option<IdentityKey>,
|
|
limit: Option<u32>,
|
|
},
|
|
GetGatewayDelegation {
|
|
gateway_identity: IdentityKey,
|
|
address: Addr,
|
|
},
|
|
LayerDistribution {},
|
|
}
|
|
|
|
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, JsonSchema)]
|
|
#[serde(rename_all = "snake_case")]
|
|
pub struct MigrateMsg {}
|