From 163c6679f9c26dc7f683d9bc69dcf9e0d36128b5 Mon Sep 17 00:00:00 2001 From: Matthew Date: Mon, 7 Nov 2022 22:57:32 +0000 Subject: [PATCH 1/6] working rebasing, with tests --- contracts/margined_engine/src/contract.rs | 2 ++ contracts/margined_engine/src/handle.rs | 18 +++++++++-- contracts/margined_engine/src/messages.rs | 19 ++++++++++- .../margined_insurance_fund/src/handle.rs | 4 ++- contracts/margined_vamm/src/contract.rs | 3 +- contracts/margined_vamm/src/handle.rs | 29 ++++++++++++++++- .../src/testing/get_price_tests.rs | 32 ++++++++++++++++++- packages/margined_perp/src/margined_engine.rs | 3 ++ packages/margined_perp/src/margined_vamm.rs | 1 + .../src/contracts/helpers/margined_engine.rs | 5 +++ 10 files changed, 109 insertions(+), 7 deletions(-) diff --git a/contracts/margined_engine/src/contract.rs b/contracts/margined_engine/src/contract.rs index abcb7680..2a95c67a 100644 --- a/contracts/margined_engine/src/contract.rs +++ b/contracts/margined_engine/src/contract.rs @@ -10,6 +10,7 @@ use margined_common::validate::{ use margined_perp::margined_engine::{ExecuteMsg, InstantiateMsg, QueryMsg}; use crate::error::ContractError; +use crate::handle::rebase_vamm; use crate::{ handle::{ close_position, deposit_margin, liquidate, open_position, pay_funding, update_config, @@ -169,6 +170,7 @@ pub fn execute(deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg) -> S withdraw_margin(deps, env, info, vamm, amount) } ExecuteMsg::SetPause { pause } => set_pause(deps, env, info, pause), + ExecuteMsg::RebaseVamm { vamm } => rebase_vamm(deps, info, vamm), } } diff --git a/contracts/margined_engine/src/handle.rs b/contracts/margined_engine/src/handle.rs index 176f4b88..f7338291 100644 --- a/contracts/margined_engine/src/handle.rs +++ b/contracts/margined_engine/src/handle.rs @@ -7,9 +7,9 @@ use crate::{ contract::{ CLOSE_POSITION_REPLY_ID, DECREASE_POSITION_REPLY_ID, INCREASE_POSITION_REPLY_ID, LIQUIDATION_REPLY_ID, PARTIAL_CLOSE_POSITION_REPLY_ID, PARTIAL_LIQUIDATION_REPLY_ID, - PAY_FUNDING_REPLY_ID, REVERSE_POSITION_REPLY_ID, + PAUSER, PAY_FUNDING_REPLY_ID, REVERSE_POSITION_REPLY_ID, }, - messages::{execute_transfer_from, withdraw}, + messages::{execute_transfer_from, execute_vamm_rebase, withdraw}, querier::{ query_is_over_fluctuation_limit, query_vamm_output_amount, query_vamm_over_spread_limit, }, @@ -515,6 +515,20 @@ pub fn withdraw_margin( ])) } +// rebase the vamm by changing the asset reserves to better replicate oracle price +pub fn rebase_vamm(deps: DepsMut, info: MessageInfo, vamm: String) -> StdResult { + // check sender to make sure its admin + if !PAUSER.is_admin(deps.as_ref(), &info.sender)? { + return Err(StdError::generic_err("unauthorized")); + } + + // verify vamm address + let vamm = deps.api.addr_validate(&vamm)?; + + // call vamm function here + Ok(Response::new().add_submessage(execute_vamm_rebase(vamm)?)) +} + // Increase the position through a swap pub fn internal_increase_position( vamm: Addr, diff --git a/contracts/margined_engine/src/messages.rs b/contracts/margined_engine/src/messages.rs index 1d553768..23e65dd2 100644 --- a/contracts/margined_engine/src/messages.rs +++ b/contracts/margined_engine/src/messages.rs @@ -13,7 +13,7 @@ use crate::{ use margined_common::asset::AssetInfo; use margined_perp::margined_engine::TransferResponse; use margined_perp::margined_insurance_fund::ExecuteMsg as InsuranceFundExecuteMessage; -use margined_perp::margined_vamm::CalcFeeResponse; +use margined_perp::margined_vamm::{CalcFeeResponse, ExecuteMsg as VammExecuteMessage}; use margined_perp::querier::query_token_balance; pub fn execute_transfer_from( @@ -126,6 +126,23 @@ pub fn execute_insurance_fund_withdrawal(deps: Deps, amount: Uint128) -> StdResu Ok(transfer_msg) } +pub fn execute_vamm_rebase(vamm: Addr) -> StdResult { + let msg = WasmMsg::Execute { + contract_addr: vamm.to_string(), + funds: vec![], + msg: to_binary(&VammExecuteMessage::RebaseVamm {})?, + }; + + let rebase_msg = SubMsg { + msg: CosmosMsg::Wasm(msg), + gas_limit: None, // probably should set a limit in the config + id: 0u64, + reply_on: ReplyOn::Never, + }; + + Ok(rebase_msg) +} + // Transfers the toll and spread fees to the the insurance fund and fee pool pub fn transfer_fees( deps: Deps, diff --git a/contracts/margined_insurance_fund/src/handle.rs b/contracts/margined_insurance_fund/src/handle.rs index 1fceceda..84169952 100644 --- a/contracts/margined_insurance_fund/src/handle.rs +++ b/contracts/margined_insurance_fund/src/handle.rs @@ -80,7 +80,9 @@ pub fn shutdown_all_vamm(deps: DepsMut, env: Env, info: MessageInfo) -> StdResul msgs.push(execute_vamm_shutdown(vamm.clone())?); } - Ok(Response::default().add_submessages(msgs)) + Ok(Response::default() + .add_submessages(msgs) + .add_attributes(vec![("action", "vamm_shutdown")])) } pub fn withdraw( diff --git a/contracts/margined_vamm/src/contract.rs b/contracts/margined_vamm/src/contract.rs index 853fa07a..50f44fc8 100644 --- a/contracts/margined_vamm/src/contract.rs +++ b/contracts/margined_vamm/src/contract.rs @@ -11,8 +11,8 @@ use margined_common::{ }; use margined_perp::margined_vamm::{ExecuteMsg, InstantiateMsg, QueryMsg}; -use crate::error::ContractError; use crate::querier::{query_underlying_price, query_underlying_twap_price}; +use crate::{error::ContractError, handle::rebase_vamm}; use crate::{ handle::{set_open, settle_funding, swap_input, swap_output, update_config, update_owner}, query::{ @@ -170,6 +170,7 @@ pub fn execute(deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg) -> S ), ExecuteMsg::SettleFunding {} => settle_funding(deps, env, info), ExecuteMsg::SetOpen { open } => set_open(deps, env, info, open), + ExecuteMsg::RebaseVamm {} => rebase_vamm(deps, env, info), } } diff --git a/contracts/margined_vamm/src/handle.rs b/contracts/margined_vamm/src/handle.rs index aed6748c..58c94663 100644 --- a/contracts/margined_vamm/src/handle.rs +++ b/contracts/margined_vamm/src/handle.rs @@ -9,7 +9,7 @@ use crate::{ contract::{ ONE_DAY_IN_SECONDS, ONE_HOUR_IN_SECONDS, ONE_MINUTE_IN_SECONDS, ONE_WEEK_IN_SECONDS, OWNER, }, - querier::query_underlying_twap_price, + querier::{query_underlying_price, query_underlying_twap_price}, query::query_twap_price, state::{read_config, read_state, store_config, store_state, Config, State}, utils::{ @@ -129,6 +129,33 @@ pub fn set_open(deps: DepsMut, env: Env, info: MessageInfo, open: bool) -> StdRe Ok(Response::new().add_attribute("action", "set_open")) } +// This function will rebase the vamm according to the current oracle price +pub fn rebase_vamm(deps: DepsMut, env: Env) -> StdResult { + let config: Config = read_config(deps.storage)?; + let mut state: State = read_state(deps.storage)?; + + let oracle_price = query_underlying_price(&deps.as_ref())?; + + // let P be oracle price, Q and B_old be current quote and base asset reserves + // B_new is the final base_asset_reserve we want. + // Current price is Q / B_old, P = Q / B_new + // Therefore B_new = Q / P + + state.base_asset_reserve = state + .quote_asset_reserve + .checked_mul(config.decimals)? + .checked_div(oracle_price)?; + + store_state(deps.storage, &state)?; + + Ok(Response::new().add_attributes(vec![ + ("action", "rebase_vamm"), + ("vamm", &env.contract.address.to_string()), + ("new_base_asset", &state.base_asset_reserve.to_string()), + ("new_price", &oracle_price.to_string()), + ])) +} + // Function should only be called by the margin engine pub fn swap_input( deps: DepsMut, diff --git a/contracts/margined_vamm/src/testing/get_price_tests.rs b/contracts/margined_vamm/src/testing/get_price_tests.rs index 203bc0b9..3c089e7d 100644 --- a/contracts/margined_vamm/src/testing/get_price_tests.rs +++ b/contracts/margined_vamm/src/testing/get_price_tests.rs @@ -2,8 +2,9 @@ use crate::contract::{instantiate, query}; use crate::handle::{get_input_price_with_reserves, get_output_price_with_reserves}; use cosmwasm_std::testing::{mock_dependencies, mock_env, mock_info}; use cosmwasm_std::{from_binary, Uint128}; +use cw_multi_test::Executor; use margined_perp::margined_vamm::{Direction, InstantiateMsg, QueryMsg, StateResponse}; -use margined_utils::scenarios::to_decimals; +use margined_utils::scenarios::{to_decimals, SimpleScenario}; /// Unit tests #[test] @@ -329,3 +330,32 @@ fn test_get_input_and_output_price_with_reserves() { .unwrap(); assert_eq!(result, to_decimals(600)); } + +#[test] +fn test_rebase_vamm() { + let SimpleScenario { + mut router, + engine, + owner, + vamm, + pricefeed, + .. + } = SimpleScenario::new(); + + let spot_price = vamm.spot_price(&router).unwrap(); + assert_eq!(spot_price, to_decimals(10u64)); + + let price: Uint128 = Uint128::from(20u128); + let timestamp: u64 = 1_000_000_000; + + let msg = pricefeed + .append_price("ETH".to_string(), price, timestamp) + .unwrap(); + router.execute(owner.clone(), msg).unwrap(); + + let msg = engine.rebase_vamm(vamm.addr().to_string()).unwrap(); + router.execute(owner.clone(), msg).unwrap(); + + let new_spot_price = vamm.spot_price(&router).unwrap(); + assert_eq!(new_spot_price, Uint128::from(20u64)); +} diff --git a/packages/margined_perp/src/margined_engine.rs b/packages/margined_perp/src/margined_engine.rs index 0fa2e9fe..8063a6b7 100644 --- a/packages/margined_perp/src/margined_engine.rs +++ b/packages/margined_perp/src/margined_engine.rs @@ -81,6 +81,9 @@ pub enum ExecuteMsg { SetPause { pause: bool, }, + RebaseVamm { + vamm: String, + }, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] diff --git a/packages/margined_perp/src/margined_vamm.rs b/packages/margined_perp/src/margined_vamm.rs index 9f0f1ae5..d9073d7f 100644 --- a/packages/margined_perp/src/margined_vamm.rs +++ b/packages/margined_perp/src/margined_vamm.rs @@ -62,6 +62,7 @@ pub enum ExecuteMsg { SetOpen { open: bool, }, + RebaseVamm {}, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] diff --git a/packages/margined_utils/src/contracts/helpers/margined_engine.rs b/packages/margined_utils/src/contracts/helpers/margined_engine.rs index ec28b059..3b46b120 100644 --- a/packages/margined_utils/src/contracts/helpers/margined_engine.rs +++ b/packages/margined_utils/src/contracts/helpers/margined_engine.rs @@ -97,6 +97,11 @@ impl EngineController { self.call(msg, vec![]) } + pub fn rebase_vamm(&self, vamm: String) -> StdResult { + let msg = ExecuteMsg::RebaseVamm { vamm }; + self.call(msg, vec![]) + } + pub fn set_partial_liquidation_ratio( &self, partial_liquidation_ratio: Uint128, From 77e14ab696cf440505ac5b6b5c3c063a3ad4b1b7 Mon Sep 17 00:00:00 2001 From: Matthew Date: Mon, 7 Nov 2022 23:01:42 +0000 Subject: [PATCH 2/6] small change --- contracts/margined_vamm/src/contract.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/margined_vamm/src/contract.rs b/contracts/margined_vamm/src/contract.rs index 50f44fc8..9f609dca 100644 --- a/contracts/margined_vamm/src/contract.rs +++ b/contracts/margined_vamm/src/contract.rs @@ -170,7 +170,7 @@ pub fn execute(deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg) -> S ), ExecuteMsg::SettleFunding {} => settle_funding(deps, env, info), ExecuteMsg::SetOpen { open } => set_open(deps, env, info, open), - ExecuteMsg::RebaseVamm {} => rebase_vamm(deps, env, info), + ExecuteMsg::RebaseVamm {} => rebase_vamm(deps, env), } } From 2c36cf56925b11f8cb00922ad154595377167bfe Mon Sep 17 00:00:00 2001 From: Matthew Date: Mon, 7 Nov 2022 23:09:44 +0000 Subject: [PATCH 3/6] small change v2 --- contracts/margined_vamm/src/handle.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/margined_vamm/src/handle.rs b/contracts/margined_vamm/src/handle.rs index 58c94663..71673ebc 100644 --- a/contracts/margined_vamm/src/handle.rs +++ b/contracts/margined_vamm/src/handle.rs @@ -151,7 +151,7 @@ pub fn rebase_vamm(deps: DepsMut, env: Env) -> StdResult { Ok(Response::new().add_attributes(vec![ ("action", "rebase_vamm"), ("vamm", &env.contract.address.to_string()), - ("new_base_asset", &state.base_asset_reserve.to_string()), + ("new_base_asset", &state.base_asset_reserve.as_ref()), ("new_price", &oracle_price.to_string()), ])) } From d72ef2ab04cd1f3d792cda6b7c1b8f46327638be Mon Sep 17 00:00:00 2001 From: Matthew Date: Mon, 7 Nov 2022 23:15:44 +0000 Subject: [PATCH 4/6] changed the wrong thing --- contracts/margined_vamm/src/handle.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contracts/margined_vamm/src/handle.rs b/contracts/margined_vamm/src/handle.rs index 71673ebc..3cdfcfef 100644 --- a/contracts/margined_vamm/src/handle.rs +++ b/contracts/margined_vamm/src/handle.rs @@ -150,8 +150,8 @@ pub fn rebase_vamm(deps: DepsMut, env: Env) -> StdResult { Ok(Response::new().add_attributes(vec![ ("action", "rebase_vamm"), - ("vamm", &env.contract.address.to_string()), - ("new_base_asset", &state.base_asset_reserve.as_ref()), + ("vamm", &env.contract.address.as_ref()), + ("new_base_asset", &state.base_asset_reserve.to_string()), ("new_price", &oracle_price.to_string()), ])) } From 50b3017ad3cb0b06718837f291302584dd32c5ad Mon Sep 17 00:00:00 2001 From: Matthew Date: Mon, 7 Nov 2022 23:19:37 +0000 Subject: [PATCH 5/6] last change --- contracts/margined_vamm/src/handle.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/margined_vamm/src/handle.rs b/contracts/margined_vamm/src/handle.rs index 3cdfcfef..3e2a22f8 100644 --- a/contracts/margined_vamm/src/handle.rs +++ b/contracts/margined_vamm/src/handle.rs @@ -150,7 +150,7 @@ pub fn rebase_vamm(deps: DepsMut, env: Env) -> StdResult { Ok(Response::new().add_attributes(vec![ ("action", "rebase_vamm"), - ("vamm", &env.contract.address.as_ref()), + ("vamm", env.contract.address.as_ref()), ("new_base_asset", &state.base_asset_reserve.to_string()), ("new_price", &oracle_price.to_string()), ])) From 7b14e07219324b1abaf7fa9c4c0412123a9a0769 Mon Sep 17 00:00:00 2001 From: Matthew Date: Tue, 8 Nov 2022 16:09:24 +0000 Subject: [PATCH 6/6] changed functionality of rebase_vamm --- contracts/margined_engine/src/contract.rs | 2 -- contracts/margined_engine/src/handle.rs | 18 ++---------------- contracts/margined_engine/src/messages.rs | 19 +------------------ contracts/margined_vamm/src/contract.rs | 2 +- contracts/margined_vamm/src/handle.rs | 6 +++++- .../src/testing/get_price_tests.rs | 3 +-- packages/margined_perp/src/margined_engine.rs | 3 --- .../src/contracts/helpers/margined_engine.rs | 5 ----- .../src/contracts/helpers/margined_vamm.rs | 5 +++++ 9 files changed, 15 insertions(+), 48 deletions(-) diff --git a/contracts/margined_engine/src/contract.rs b/contracts/margined_engine/src/contract.rs index 2a95c67a..abcb7680 100644 --- a/contracts/margined_engine/src/contract.rs +++ b/contracts/margined_engine/src/contract.rs @@ -10,7 +10,6 @@ use margined_common::validate::{ use margined_perp::margined_engine::{ExecuteMsg, InstantiateMsg, QueryMsg}; use crate::error::ContractError; -use crate::handle::rebase_vamm; use crate::{ handle::{ close_position, deposit_margin, liquidate, open_position, pay_funding, update_config, @@ -170,7 +169,6 @@ pub fn execute(deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg) -> S withdraw_margin(deps, env, info, vamm, amount) } ExecuteMsg::SetPause { pause } => set_pause(deps, env, info, pause), - ExecuteMsg::RebaseVamm { vamm } => rebase_vamm(deps, info, vamm), } } diff --git a/contracts/margined_engine/src/handle.rs b/contracts/margined_engine/src/handle.rs index f7338291..176f4b88 100644 --- a/contracts/margined_engine/src/handle.rs +++ b/contracts/margined_engine/src/handle.rs @@ -7,9 +7,9 @@ use crate::{ contract::{ CLOSE_POSITION_REPLY_ID, DECREASE_POSITION_REPLY_ID, INCREASE_POSITION_REPLY_ID, LIQUIDATION_REPLY_ID, PARTIAL_CLOSE_POSITION_REPLY_ID, PARTIAL_LIQUIDATION_REPLY_ID, - PAUSER, PAY_FUNDING_REPLY_ID, REVERSE_POSITION_REPLY_ID, + PAY_FUNDING_REPLY_ID, REVERSE_POSITION_REPLY_ID, }, - messages::{execute_transfer_from, execute_vamm_rebase, withdraw}, + messages::{execute_transfer_from, withdraw}, querier::{ query_is_over_fluctuation_limit, query_vamm_output_amount, query_vamm_over_spread_limit, }, @@ -515,20 +515,6 @@ pub fn withdraw_margin( ])) } -// rebase the vamm by changing the asset reserves to better replicate oracle price -pub fn rebase_vamm(deps: DepsMut, info: MessageInfo, vamm: String) -> StdResult { - // check sender to make sure its admin - if !PAUSER.is_admin(deps.as_ref(), &info.sender)? { - return Err(StdError::generic_err("unauthorized")); - } - - // verify vamm address - let vamm = deps.api.addr_validate(&vamm)?; - - // call vamm function here - Ok(Response::new().add_submessage(execute_vamm_rebase(vamm)?)) -} - // Increase the position through a swap pub fn internal_increase_position( vamm: Addr, diff --git a/contracts/margined_engine/src/messages.rs b/contracts/margined_engine/src/messages.rs index 23e65dd2..1d553768 100644 --- a/contracts/margined_engine/src/messages.rs +++ b/contracts/margined_engine/src/messages.rs @@ -13,7 +13,7 @@ use crate::{ use margined_common::asset::AssetInfo; use margined_perp::margined_engine::TransferResponse; use margined_perp::margined_insurance_fund::ExecuteMsg as InsuranceFundExecuteMessage; -use margined_perp::margined_vamm::{CalcFeeResponse, ExecuteMsg as VammExecuteMessage}; +use margined_perp::margined_vamm::CalcFeeResponse; use margined_perp::querier::query_token_balance; pub fn execute_transfer_from( @@ -126,23 +126,6 @@ pub fn execute_insurance_fund_withdrawal(deps: Deps, amount: Uint128) -> StdResu Ok(transfer_msg) } -pub fn execute_vamm_rebase(vamm: Addr) -> StdResult { - let msg = WasmMsg::Execute { - contract_addr: vamm.to_string(), - funds: vec![], - msg: to_binary(&VammExecuteMessage::RebaseVamm {})?, - }; - - let rebase_msg = SubMsg { - msg: CosmosMsg::Wasm(msg), - gas_limit: None, // probably should set a limit in the config - id: 0u64, - reply_on: ReplyOn::Never, - }; - - Ok(rebase_msg) -} - // Transfers the toll and spread fees to the the insurance fund and fee pool pub fn transfer_fees( deps: Deps, diff --git a/contracts/margined_vamm/src/contract.rs b/contracts/margined_vamm/src/contract.rs index 9f609dca..3b8235bb 100644 --- a/contracts/margined_vamm/src/contract.rs +++ b/contracts/margined_vamm/src/contract.rs @@ -170,7 +170,7 @@ pub fn execute(deps: DepsMut, env: Env, info: MessageInfo, msg: ExecuteMsg) -> S ), ExecuteMsg::SettleFunding {} => settle_funding(deps, env, info), ExecuteMsg::SetOpen { open } => set_open(deps, env, info, open), - ExecuteMsg::RebaseVamm {} => rebase_vamm(deps, env), + ExecuteMsg::RebaseVamm {} => rebase_vamm(deps, info, env), } } diff --git a/contracts/margined_vamm/src/handle.rs b/contracts/margined_vamm/src/handle.rs index 3e2a22f8..51579f7f 100644 --- a/contracts/margined_vamm/src/handle.rs +++ b/contracts/margined_vamm/src/handle.rs @@ -130,10 +130,14 @@ pub fn set_open(deps: DepsMut, env: Env, info: MessageInfo, open: bool) -> StdRe } // This function will rebase the vamm according to the current oracle price -pub fn rebase_vamm(deps: DepsMut, env: Env) -> StdResult { +pub fn rebase_vamm(deps: DepsMut, info: MessageInfo, env: Env) -> StdResult { let config: Config = read_config(deps.storage)?; let mut state: State = read_state(deps.storage)?; + if !OWNER.is_admin(deps.as_ref(), &info.sender)? { + return Err(StdError::generic_err("unauthorized")); + } + let oracle_price = query_underlying_price(&deps.as_ref())?; // let P be oracle price, Q and B_old be current quote and base asset reserves diff --git a/contracts/margined_vamm/src/testing/get_price_tests.rs b/contracts/margined_vamm/src/testing/get_price_tests.rs index 3c089e7d..02bf5b11 100644 --- a/contracts/margined_vamm/src/testing/get_price_tests.rs +++ b/contracts/margined_vamm/src/testing/get_price_tests.rs @@ -335,7 +335,6 @@ fn test_get_input_and_output_price_with_reserves() { fn test_rebase_vamm() { let SimpleScenario { mut router, - engine, owner, vamm, pricefeed, @@ -353,7 +352,7 @@ fn test_rebase_vamm() { .unwrap(); router.execute(owner.clone(), msg).unwrap(); - let msg = engine.rebase_vamm(vamm.addr().to_string()).unwrap(); + let msg = vamm.rebase_vamm().unwrap(); router.execute(owner.clone(), msg).unwrap(); let new_spot_price = vamm.spot_price(&router).unwrap(); diff --git a/packages/margined_perp/src/margined_engine.rs b/packages/margined_perp/src/margined_engine.rs index 8063a6b7..0fa2e9fe 100644 --- a/packages/margined_perp/src/margined_engine.rs +++ b/packages/margined_perp/src/margined_engine.rs @@ -81,9 +81,6 @@ pub enum ExecuteMsg { SetPause { pause: bool, }, - RebaseVamm { - vamm: String, - }, } #[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, JsonSchema)] diff --git a/packages/margined_utils/src/contracts/helpers/margined_engine.rs b/packages/margined_utils/src/contracts/helpers/margined_engine.rs index 3b46b120..ec28b059 100644 --- a/packages/margined_utils/src/contracts/helpers/margined_engine.rs +++ b/packages/margined_utils/src/contracts/helpers/margined_engine.rs @@ -97,11 +97,6 @@ impl EngineController { self.call(msg, vec![]) } - pub fn rebase_vamm(&self, vamm: String) -> StdResult { - let msg = ExecuteMsg::RebaseVamm { vamm }; - self.call(msg, vec![]) - } - pub fn set_partial_liquidation_ratio( &self, partial_liquidation_ratio: Uint128, diff --git a/packages/margined_utils/src/contracts/helpers/margined_vamm.rs b/packages/margined_utils/src/contracts/helpers/margined_vamm.rs index c21d8309..7b5b417f 100644 --- a/packages/margined_utils/src/contracts/helpers/margined_vamm.rs +++ b/packages/margined_utils/src/contracts/helpers/margined_vamm.rs @@ -61,6 +61,11 @@ impl VammController { self.call(msg, vec![]) } + pub fn rebase_vamm(&self) -> StdResult { + let msg = ExecuteMsg::RebaseVamm {}; + self.call(msg, vec![]) + } + pub fn set_toll_ratio(&self, toll_ratio: Uint128) -> StdResult { let msg = ExecuteMsg::UpdateConfig { base_asset_holding_cap: None,