From ba8a8cbfa41eb5cc15d8196a3138e0b0a7bc75ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C4=99drzej=20Stuczy=C5=84ski?= Date: Tue, 14 Jun 2022 11:25:24 +0100 Subject: [PATCH] Added simulation endpoints for vesting delegation --- nym-wallet/src-tauri/src/main.rs | 2 + .../src/operations/simulate/vesting.rs | 49 +++++++++++++++++++ nym-wallet/src/requests/simulate.ts | 6 +++ 3 files changed, 57 insertions(+) diff --git a/nym-wallet/src-tauri/src/main.rs b/nym-wallet/src-tauri/src/main.rs index a8efcf1bf8..8701ec6556 100644 --- a/nym-wallet/src-tauri/src/main.rs +++ b/nym-wallet/src-tauri/src/main.rs @@ -125,6 +125,8 @@ fn main() { simulate::mixnet::simulate_update_mixnode, simulate::mixnet::simulate_delegate_to_mixnode, simulate::mixnet::simulate_undelegate_from_mixnode, + simulate::vesting::simulate_vesting_delegate_to_mixnode, + simulate::vesting::simulate_vesting_undelegate_from_mixnode, simulate::vesting::simulate_vesting_bond_gateway, simulate::vesting::simulate_vesting_unbond_gateway, simulate::vesting::simulate_vesting_bond_mixnode, diff --git a/nym-wallet/src-tauri/src/operations/simulate/vesting.rs b/nym-wallet/src-tauri/src/operations/simulate/vesting.rs index b0f3f649d2..8a9fef208b 100644 --- a/nym-wallet/src-tauri/src/operations/simulate/vesting.rs +++ b/nym-wallet/src-tauri/src/operations/simulate/vesting.rs @@ -131,6 +131,55 @@ pub async fn simulate_vesting_update_mixnode( Ok(SimulateResult::new(result.gas_info, gas_price).detailed_fee()) } +#[tauri::command] +pub async fn simulate_vesting_delegate_to_mixnode( + identity: &str, + amount: MajorCurrencyAmount, + state: tauri::State<'_, Arc>>, +) -> Result { + let guard = state.read().await; + let amount = amount.into(); + + let client = guard.current_client()?; + let vesting_contract = client.nymd.vesting_contract_address(); + let gas_price = client.nymd.gas_price().clone(); + + let msg = client.nymd.wrap_contract_execute_message( + vesting_contract, + &ExecuteMsg::DelegateToMixnode { + mix_identity: identity.to_string(), + amount, + }, + vec![], + )?; + + let result = client.nymd.simulate(vec![msg]).await?; + Ok(SimulateResult::new(result.gas_info, gas_price).detailed_fee()) +} + +#[tauri::command] +pub async fn simulate_vesting_undelegate_from_mixnode( + identity: &str, + state: tauri::State<'_, Arc>>, +) -> Result { + let guard = state.read().await; + + let client = guard.current_client()?; + let vesting_contract = client.nymd.vesting_contract_address(); + let gas_price = client.nymd.gas_price().clone(); + + let msg = client.nymd.wrap_contract_execute_message( + vesting_contract, + &ExecuteMsg::UndelegateFromMixnode { + mix_identity: identity.to_string(), + }, + vec![], + )?; + + let result = client.nymd.simulate(vec![msg]).await?; + Ok(SimulateResult::new(result.gas_info, gas_price).detailed_fee()) +} + #[tauri::command] pub async fn simulate_withdraw_vested_coins( amount: MajorCurrencyAmount, diff --git a/nym-wallet/src/requests/simulate.ts b/nym-wallet/src/requests/simulate.ts index d328ec594e..17be9c31f6 100644 --- a/nym-wallet/src/requests/simulate.ts +++ b/nym-wallet/src/requests/simulate.ts @@ -29,6 +29,12 @@ export const simulateVestingClaimDelgatorReward = async (identity: string) => export const simulateVestingCompoundDelgatorReward = async (identity: string) => invokeWrapper('simulate_vesting_compound_delegator_reward', { mixIdentity: identity }); +export const simulateVestingDelegateToMixnode = async (args: any) => + invokeWrapper('simulate_vesting_delegate_to_mixnode', args); + +export const simulateVestingUndelegateFromMixnode = async (args: any) => + invokeWrapper('simulate_vesting_undelegate_from_mixnode', args); + export const simulateVestingBondGateway = async (args: any) => invokeWrapper('simulate_vesting_bond_gateway', args);