diff --git a/Cargo.lock b/Cargo.lock index 3eeadd47..d9bf8189 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2139,7 +2139,6 @@ dependencies = [ "mars-owner 2.0.0", "mars-rover", "mars-types", - "proptest", "serde_json", "thiserror", ] diff --git a/contracts/account-nft/Cargo.toml b/contracts/account-nft/Cargo.toml index fb4e9ef1..5cea3282 100644 --- a/contracts/account-nft/Cargo.toml +++ b/contracts/account-nft/Cargo.toml @@ -36,5 +36,4 @@ cw-multi-test = { workspace = true } mars-mock-credit-manager = { workspace = true } mars-mock-rover-health = { workspace = true } mars-owner = { workspace = true } -proptest = { workspace = true } serde_json = { workspace = true } diff --git a/contracts/account-nft/src/contract.rs b/contracts/account-nft/src/contract.rs index b77d4b46..2426c508 100644 --- a/contracts/account-nft/src/contract.rs +++ b/contracts/account-nft/src/contract.rs @@ -61,8 +61,7 @@ pub fn execute( match msg { ExecuteMsg::Mint { user, - token_id, - } => mint(deps, info, &user, token_id), + } => mint(deps, info, &user), ExecuteMsg::UpdateConfig { updates, } => update_config(deps, info, updates), diff --git a/contracts/account-nft/src/error.rs b/contracts/account-nft/src/error.rs index ad9f2075..34c1df77 100644 --- a/contracts/account-nft/src/error.rs +++ b/contracts/account-nft/src/error.rs @@ -26,9 +26,4 @@ pub enum ContractError { #[error("{0}")] Version(#[from] cw2::VersionError), - - #[error("Invalid token_id: {reason}")] - InvalidTokenId { - reason: String, - }, } diff --git a/contracts/account-nft/src/execute.rs b/contracts/account-nft/src/execute.rs index 16aece0c..b9d35726 100644 --- a/contracts/account-nft/src/execute.rs +++ b/contracts/account-nft/src/execute.rs @@ -18,26 +18,14 @@ use crate::{ error::ContractError::{ self, BaseError, BurnNotAllowed, CreditManagerContractNotSet, HealthContractNotSet, }, - helpers::validate_token_id, state::{CONFIG, NEXT_ID}, }; -pub fn mint( - deps: DepsMut, - info: MessageInfo, - user: &str, - token_id: Option, -) -> Result { - let next_id = if let Some(ti) = token_id { - validate_token_id(&ti)?; - ti - } else { - let next_id = NEXT_ID.load(deps.storage)?; - NEXT_ID.save(deps.storage, &(next_id + 1))?; - next_id.to_string() - }; +pub fn mint(deps: DepsMut, info: MessageInfo, user: &str) -> Result { + let next_id = NEXT_ID.load(deps.storage)?; + NEXT_ID.save(deps.storage, &(next_id + 1))?; Parent::default() - .mint(deps, info, next_id, user.to_string(), None, Empty {}) + .mint(deps, info, next_id.to_string(), user.to_string(), None, Empty {}) .map_err(Into::into) } diff --git a/contracts/account-nft/src/helpers.rs b/contracts/account-nft/src/helpers.rs deleted file mode 100644 index 93052e25..00000000 --- a/contracts/account-nft/src/helpers.rs +++ /dev/null @@ -1,37 +0,0 @@ -use crate::error::ContractError; - -/// token_id follows Twitter username/handle rules: -/// - must be more than 4 characters long and can be up to 15 characters or less, -/// - can contain only letters, numbers, and underscores — no spaces are allowed. -/// We won't to overlap with automatic generation of token_id (via `next_id` variable), so we add -/// additional rule to ensure uniqueness of token_id: -/// - should contain at least one letter. -pub fn validate_token_id(token_id: &str) -> Result<(), ContractError> { - if token_id.len() < 4 || token_id.len() > 15 { - return Err(ContractError::InvalidTokenId { - reason: "token_id length should be between 4 and 15 chars".to_string(), - }); - } - - let mut contains_letter = false; - let chars = token_id.chars(); - for c in chars { - if !(c.is_ascii_alphanumeric() || c == '_') { - return Err(ContractError::InvalidTokenId { - reason: "token_id can contain only letters, numbers, and underscores".to_string(), - }); - } - - if c.is_alphabetic() { - contains_letter = true; - } - } - - if !contains_letter { - return Err(ContractError::InvalidTokenId { - reason: "token_id should contain at least one letter".to_string(), - }); - } - - Ok(()) -} diff --git a/contracts/account-nft/src/lib.rs b/contracts/account-nft/src/lib.rs index c3abd1f8..0c2c364c 100644 --- a/contracts/account-nft/src/lib.rs +++ b/contracts/account-nft/src/lib.rs @@ -1,7 +1,6 @@ pub mod contract; pub mod error; pub mod execute; -mod helpers; pub mod migrations; pub mod query; pub mod state; diff --git a/contracts/account-nft/tests/tests/helpers/mock_env.rs b/contracts/account-nft/tests/tests/helpers/mock_env.rs index c7fb5337..57554eb4 100644 --- a/contracts/account-nft/tests/tests/helpers/mock_env.rs +++ b/contracts/account-nft/tests/tests/helpers/mock_env.rs @@ -122,20 +122,11 @@ impl MockEnv { } pub fn mint(&mut self, token_owner: &Addr) -> AnyResult { - self.mint_with_custom_token_id(token_owner, None) - } - - pub fn mint_with_custom_token_id( - &mut self, - token_owner: &Addr, - token_id: Option, - ) -> AnyResult { let res = self.app.execute_contract( self.minter.clone(), self.nft_contract.clone(), &ExecuteMsg::Mint { user: token_owner.into(), - token_id, }, &[], )?; diff --git a/contracts/account-nft/tests/tests/test_mint.rs b/contracts/account-nft/tests/tests/test_mint.rs index 9e0cc9c7..ca068b0c 100644 --- a/contracts/account-nft/tests/tests/test_mint.rs +++ b/contracts/account-nft/tests/tests/test_mint.rs @@ -7,7 +7,6 @@ use mars_types::{ account_nft::{ExecuteMsg, QueryMsg::OwnerOf}, health::AccountKind, }; -use proptest::prelude::*; use super::helpers::{below_max_for_burn, MockEnv}; @@ -71,7 +70,6 @@ fn only_minter_can_mint() { mock.nft_contract.clone(), &ExecuteMsg::Mint { user: bad_guy.into(), - token_id: None, }, &[], ); @@ -106,78 +104,3 @@ fn normal_base_cw721_actions_can_still_be_taken() { .unwrap(); assert_eq!(res.owner, rover_user_b.to_string()) } - -#[test] -fn invalid_custom_token_id_length() { - let mut mock = MockEnv::new().build().unwrap(); - mock.assert_next_id("1"); - - let user = Addr::unchecked("user_abc"); - - let res = mock.mint_with_custom_token_id(&user, Some("abc".to_string())); - let err: ContractError = res.unwrap_err().downcast().unwrap(); - assert_eq!( - err, - ContractError::InvalidTokenId { - reason: "token_id length should be between 4 and 15 chars".to_string() - } - ); - mock.assert_next_id("1"); - - let res = mock.mint_with_custom_token_id(&user, Some("abcdefghijklmnop".to_string())); - let err: ContractError = res.unwrap_err().downcast().unwrap(); - assert_eq!( - err, - ContractError::InvalidTokenId { - reason: "token_id length should be between 4 and 15 chars".to_string() - } - ); - mock.assert_next_id("1"); -} - -#[test] -fn custom_token_id_can_not_be_same_as_automatically_generated() { - let mut mock = MockEnv::new().build().unwrap(); - mock.assert_next_id("1"); - - let user = Addr::unchecked("user_abc"); - - let res = mock.mint_with_custom_token_id(&user, Some("12345".to_string())); - let err: ContractError = res.unwrap_err().downcast().unwrap(); - assert_eq!( - err, - ContractError::InvalidTokenId { - reason: "token_id should contain at least one letter".to_string() - } - ); - mock.assert_next_id("1"); -} - -proptest! { - #[test] - fn invalid_custom_token_id_characters(token_id in "[!@#$%^&*()-+]{4,15}") { - let mut mock = MockEnv::new().build().unwrap(); - mock.assert_next_id("1"); - - let user = Addr::unchecked("user_abc"); - let res = mock.mint_with_custom_token_id(&user, Some(token_id)); - let err: ContractError = res.unwrap_err().downcast().unwrap(); - prop_assert_eq!(err, ContractError::InvalidTokenId { reason: "token_id can contain only letters, numbers, and underscores".to_string() }); - mock.assert_next_id("1"); - } - - /// The regex pattern ensures that the string: - /// - starts with three characters (letters, digits, or underscores), - /// - contains at least one letter, - /// - can have up to 11 additional characters (letters, digits, or underscores) to fulfill the length requirement. - #[test] - fn valid_custom_token_id(token_id in "[a-zA-Z0-9_]{3}[a-zA-Z][a-zA-Z0-9_]{0,11}") { - let mut mock = MockEnv::new().build().unwrap(); - mock.assert_next_id("1"); - - let user = Addr::unchecked("user_abc"); - let saved_token_id = mock.mint_with_custom_token_id(&user, Some(token_id.clone())).unwrap(); - assert_eq!(saved_token_id, token_id); - mock.assert_next_id("1"); - } -} diff --git a/contracts/credit-manager/src/contract.rs b/contracts/credit-manager/src/contract.rs index ae4f1800..c5d334fa 100644 --- a/contracts/credit-manager/src/contract.rs +++ b/contracts/credit-manager/src/contract.rs @@ -49,12 +49,8 @@ pub fn execute( ) -> ContractResult { match msg { ExecuteMsg::CreateCreditAccount(kind) => { - create_credit_account(&mut deps, info.sender, kind, None).map(|res| res.1) + create_credit_account(&mut deps, info.sender, kind).map(|res| res.1) } - ExecuteMsg::CreateCreditAccountV2 { - kind, - account_id, - } => create_credit_account(&mut deps, info.sender, kind, account_id).map(|res| res.1), ExecuteMsg::UpdateConfig { updates, } => update_config(deps, env, info, updates), diff --git a/contracts/credit-manager/src/execute.rs b/contracts/credit-manager/src/execute.rs index 8e0dd5be..c9758dfa 100644 --- a/contracts/credit-manager/src/execute.rs +++ b/contracts/credit-manager/src/execute.rs @@ -46,23 +46,18 @@ pub fn create_credit_account( deps: &mut DepsMut, user: Addr, kind: AccountKind, - account_id: Option, ) -> ContractResult<(String, Response)> { let account_nft = ACCOUNT_NFT.load(deps.storage)?; - let next_id = if let Some(ai) = account_id.clone() { - ai - } else { - account_nft.query_next_id(&deps.querier)? - }; + let next_id = account_nft.query_next_id(&deps.querier)?; let mut msgs = vec![]; + let nft_mint_msg = CosmosMsg::Wasm(WasmMsg::Execute { contract_addr: account_nft.address().into(), funds: vec![], msg: to_json_binary(&NftExecuteMsg::Mint { user: user.to_string(), - token_id: account_id, })?, }); msgs.push(nft_mint_msg); @@ -92,8 +87,7 @@ pub fn create_credit_account( let response = Response::new() .add_messages(msgs) .add_attribute("action", "create_credit_account") - .add_attribute("kind", kind.to_string()) - .add_attribute("account_id", next_id.clone()); + .add_attribute("kind", kind.to_string()); Ok((next_id, response)) } @@ -118,7 +112,6 @@ pub fn dispatch_actions( &mut deps, info.sender.clone(), account_kind.unwrap_or(AccountKind::Default), - None, )?; response = res; acc_id diff --git a/contracts/credit-manager/src/update_config.rs b/contracts/credit-manager/src/update_config.rs index 08501f2a..0382cbd4 100644 --- a/contracts/credit-manager/src/update_config.rs +++ b/contracts/credit-manager/src/update_config.rs @@ -110,7 +110,7 @@ pub fn update_config( )?; let (_, res) = - create_credit_account(&mut deps, rewards_collector_addr, AccountKind::Default, None)?; + create_credit_account(&mut deps, rewards_collector_addr, AccountKind::Default)?; response = response .add_submessages(res.messages) diff --git a/contracts/credit-manager/tests/tests/test_create_credit_account.rs b/contracts/credit-manager/tests/tests/test_create_credit_account.rs index 47352c4e..cf2a1e04 100644 --- a/contracts/credit-manager/tests/tests/test_create_credit_account.rs +++ b/contracts/credit-manager/tests/tests/test_create_credit_account.rs @@ -1,11 +1,9 @@ -use cosmwasm_std::{coin, Addr, Empty}; +use cosmwasm_std::{Addr, Empty}; use cw721::OwnerOfResponse; use cw721_base::QueryMsg as NftQueryMsg; use mars_types::health::AccountKind; -use test_case::test_case; use super::helpers::MockEnv; -use crate::tests::helpers::{deploy_managed_vault, AccountToFund}; #[test] fn create_credit_account_fails_without_nft_contract_set() { @@ -69,78 +67,3 @@ fn after_create_returns_account_kind() { assert_eq!(position_1.account_kind, AccountKind::Default); assert_eq!(position_2.account_kind, AccountKind::HighLeveredStrategy); } - -#[test_case("Mars_default", AccountKind::Default; "create Default account")] -#[test_case("Mars_HLS", AccountKind::HighLeveredStrategy; "create HLS account")] -fn create_credit_account_v2(custom_account_id: &str, account_kind: AccountKind) { - let mut mock = MockEnv::new().build().unwrap(); - - // Double checking ownership by querying NFT account-nft for correct owner - let config = mock.query_config(); - - let user = Addr::unchecked("user_123"); - let account_id = mock - .create_credit_account_v2(&user, account_kind.clone(), Some(custom_account_id.to_string())) - .unwrap(); - assert_eq!(account_id, custom_account_id.to_string()); - - let owner_res: OwnerOfResponse = mock - .app - .wrap() - .query_wasm_smart( - config.account_nft.clone().unwrap(), - &NftQueryMsg::::OwnerOf { - token_id: account_id.clone(), - include_expired: None, - }, - ) - .unwrap(); - - assert_eq!(user, owner_res.owner); - let position = mock.query_positions(&account_id); - assert_eq!(position.account_kind, account_kind); -} - -#[test] -fn create_fund_manager_credit_account_v2() { - let custom_account_id = "Mars_Vault"; - let user = Addr::unchecked("user_123"); - - let mut mock = MockEnv::new() - .fund_account(AccountToFund { - addr: user.clone(), - funds: vec![coin(1_000_000_000, "untrn")], - }) - .build() - .unwrap(); - - // Double checking ownership by querying NFT account-nft for correct owner - let config = mock.query_config(); - - let credit_manager = mock.rover.clone(); - let managed_vault_addr = deploy_managed_vault(&mut mock.app, &user, &credit_manager); - - let account_kind = AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }; - let account_id = mock - .create_credit_account_v2(&user, account_kind.clone(), Some(custom_account_id.to_string())) - .unwrap(); - assert_eq!(account_id, custom_account_id.to_string()); - - let owner_res: OwnerOfResponse = mock - .app - .wrap() - .query_wasm_smart( - config.account_nft.clone().unwrap(), - &NftQueryMsg::::OwnerOf { - token_id: account_id.clone(), - include_expired: None, - }, - ) - .unwrap(); - - assert_eq!(user, owner_res.owner); - let position = mock.query_positions(&account_id); - assert_eq!(position.account_kind, account_kind); -} diff --git a/contracts/credit-manager/tests/tests/test_fund_manager_accounts.rs b/contracts/credit-manager/tests/tests/test_fund_manager_accounts.rs index 3606d45d..94ee4e4e 100644 --- a/contracts/credit-manager/tests/tests/test_fund_manager_accounts.rs +++ b/contracts/credit-manager/tests/tests/test_fund_manager_accounts.rs @@ -2,10 +2,7 @@ use cosmwasm_std::{coin, coins, Addr, Coin, Uint128}; use cw_multi_test::{BankSudo, SudoMsg}; use cw_paginate::{Metadata, PaginationResponse}; use mars_credit_manager::error::ContractError; -use mars_types::{ - credit_manager::{Action, ActionAmount, ActionCoin, VaultBinding}, - health::AccountKind, -}; +use mars_types::credit_manager::{Action, ActionAmount, ActionCoin, VaultBinding}; use super::helpers::{assert_err, deploy_managed_vault, uosmo_info, AccountToFund, MockEnv}; @@ -27,15 +24,7 @@ fn fund_manager_wallet_cannot_deposit_and_withdraw() { let managed_vault_addr = deploy_managed_vault(&mut mock.app, &fund_manager_wallet, &credit_manager); - let account_id = mock - .create_credit_account_v2( - &fund_manager_wallet, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + let account_id = mock.create_fund_manager_account(&fund_manager_wallet, &managed_vault_addr); // deposit not allowed let deposit_amount = Uint128::new(234); @@ -183,15 +172,7 @@ fn addr_not_connected_to_fund_manager_acc_does_not_work() { let managed_vault_addr = deploy_managed_vault(&mut mock.app, &fund_manager_wallet, &credit_manager); - let account_id = mock - .create_credit_account_v2( - &fund_manager_wallet, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + let account_id = mock.create_fund_manager_account(&fund_manager_wallet, &managed_vault_addr); // try to deposit from different addr let deposit_amount = Uint128::new(234); @@ -238,15 +219,7 @@ fn fund_manager_wallet_can_work_on_behalf_of_vault() { })) .unwrap(); - let account_id = mock - .create_credit_account_v2( - &fund_manager_wallet, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + let account_id = mock.create_fund_manager_account(&fund_manager_wallet, &managed_vault_addr); // deposit from vault to fund manager account let deposit_amount = Uint128::new(234); @@ -337,15 +310,7 @@ fn vault_bindings() { let credit_manager = mock.rover.clone(); let vault_addr_1 = deploy_managed_vault(&mut mock.app, &fund_manager_wallet, &credit_manager); - let fund_acc_id_1 = mock - .create_credit_account_v2( - &fund_manager_wallet, - AccountKind::FundManager { - vault_addr: vault_addr_1.to_string(), - }, - None, - ) - .unwrap(); + let fund_acc_id_1 = mock.create_fund_manager_account(&fund_manager_wallet, &vault_addr_1); let res = mock.query_vault_bindings(None, None).unwrap(); assert_eq!( @@ -362,25 +327,9 @@ fn vault_bindings() { ); let vault_addr_2 = deploy_managed_vault(&mut mock.app, &fund_manager_wallet, &credit_manager); - let fund_acc_id_2 = mock - .create_credit_account_v2( - &fund_manager_wallet, - AccountKind::FundManager { - vault_addr: vault_addr_2.to_string(), - }, - None, - ) - .unwrap(); + let fund_acc_id_2 = mock.create_fund_manager_account(&fund_manager_wallet, &vault_addr_2); let vault_addr_3 = deploy_managed_vault(&mut mock.app, &fund_manager_wallet, &credit_manager); - let fund_acc_id_3 = mock - .create_credit_account_v2( - &fund_manager_wallet, - AccountKind::FundManager { - vault_addr: vault_addr_3.to_string(), - }, - None, - ) - .unwrap(); + let fund_acc_id_3 = mock.create_fund_manager_account(&fund_manager_wallet, &vault_addr_3); let res = mock.query_vault_bindings(None, None).unwrap(); assert_eq!( diff --git a/contracts/vault/tests/tests/test_binding.rs b/contracts/vault/tests/tests/test_binding.rs index cae605d7..7057348a 100644 --- a/contracts/vault/tests/tests/test_binding.rs +++ b/contracts/vault/tests/tests/test_binding.rs @@ -1,5 +1,4 @@ use cosmwasm_std::{coin, Addr, Decimal, Uint128}; -use mars_types::health::AccountKind; use mars_vault::{ error::ContractError, msg::VaultInfoResponseExt, performance_fee::PerformanceFeeConfig, }; @@ -32,15 +31,7 @@ fn only_credit_manager_can_bind_account() { ); assert_vault_err(res, ContractError::NotCreditManager {}); - let vault_acc_id = mock - .create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + let vault_acc_id = mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); let vault_info_res = query_vault_info(&mock, &managed_vault_addr); assert_eq!( vault_info_res, @@ -78,17 +69,9 @@ fn only_one_binding_allowed() { let managed_vault_addr = deploy_managed_vault(&mut mock.app, &fund_manager, &credit_manager); - mock.create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); - let random_existing_acc_id = - mock.create_credit_account_v2(&fund_manager, AccountKind::Default, None).unwrap(); + let random_existing_acc_id = mock.create_credit_account(&fund_manager).unwrap(); let res = execute_bind_credit_manager_account( &mut mock, &credit_manager, @@ -113,8 +96,7 @@ fn account_owner_can_not_be_different_than_contract_owner() { let managed_vault_addr = deploy_managed_vault(&mut mock.app, &fund_manager, &credit_manager); - let random_existing_acc_id = - mock.create_credit_account_v2(&random_wallet, AccountKind::Default, None).unwrap(); + let random_existing_acc_id = mock.create_credit_account(&random_wallet).unwrap(); let res = execute_bind_credit_manager_account( &mut mock, &credit_manager, diff --git a/contracts/vault/tests/tests/test_deposit.rs b/contracts/vault/tests/tests/test_deposit.rs index d6b1fc63..bcb690db 100644 --- a/contracts/vault/tests/tests/test_deposit.rs +++ b/contracts/vault/tests/tests/test_deposit.rs @@ -1,6 +1,5 @@ use cosmwasm_std::{coin, Addr, Decimal, Uint128}; use cw_utils::PaymentError; -use mars_types::health::AccountKind; use mars_vault::error::ContractError; use super::{ @@ -32,14 +31,7 @@ fn deposit_invalid_funds() { let managed_vault_addr = deploy_managed_vault(&mut mock.app, &fund_manager, &credit_manager); - mock.create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); let res = execute_deposit( &mut mock, @@ -132,15 +124,7 @@ fn deposit_succeded() { let vault_token_balance = mock.query_balance(&user, &vault_token).amount; assert!(vault_token_balance.is_zero()); - let account_id = mock - .create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + let account_id = mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); let deposited_amt = Uint128::new(123_000_000); execute_deposit( diff --git a/contracts/vault/tests/tests/test_performance_fee.rs b/contracts/vault/tests/tests/test_performance_fee.rs index 1b585aee..4e5aa907 100644 --- a/contracts/vault/tests/tests/test_performance_fee.rs +++ b/contracts/vault/tests/tests/test_performance_fee.rs @@ -6,7 +6,7 @@ use mars_mock_oracle::msg::CoinPrice; use mars_testing::multitest::helpers::{ coin_info, deploy_managed_vault_with_performance_fee, uatom_info, CoinInfo, }; -use mars_types::{credit_manager::Action, health::AccountKind, oracle::ActionKind}; +use mars_types::{credit_manager::Action, oracle::ActionKind}; use mars_vault::{ error::ContractError, performance_fee::{PerformanceFeeConfig, PerformanceFeeState}, @@ -66,15 +66,7 @@ fn unauthorized_performance_fee_withdraw() { let managed_vault_addr = deploy_managed_vault(&mut mock.app, &fund_manager, &credit_manager); - let vault_acc_id = mock - .create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + let vault_acc_id = mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); // vault user can't withdraw performance fee let res = execute_withdraw_performance_fee(&mut mock, &user, &managed_vault_addr, None); @@ -131,14 +123,7 @@ fn cannot_withdraw_zero_performance_fee() { }, ); - mock.create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); let res = execute_withdraw_performance_fee(&mut mock, &fund_manager, &managed_vault_addr, None); assert_vault_err(res, ContractError::ZeroPerformanceFee {}); @@ -178,15 +163,7 @@ fn cannot_withdraw_if_withdrawal_interval_not_passed() { }, ); - let fund_acc_id = mock - .create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + let fund_acc_id = mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); // simulate base token price = 1 USD mock.price_change(CoinPrice { @@ -284,15 +261,7 @@ fn performance_fee_correctly_accumulated() { }, ); - let fund_acc_id = mock - .create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + let fund_acc_id = mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); // simulate base token price = 1 USD mock.price_change(CoinPrice { diff --git a/contracts/vault/tests/tests/test_redeem.rs b/contracts/vault/tests/tests/test_redeem.rs index 29669368..1fc2aa2e 100644 --- a/contracts/vault/tests/tests/test_redeem.rs +++ b/contracts/vault/tests/tests/test_redeem.rs @@ -4,7 +4,6 @@ use mars_mock_oracle::msg::CoinPrice; use mars_testing::multitest::helpers::{uosmo_info, CoinInfo}; use mars_types::{ credit_manager::{Action, ActionAmount, ActionCoin}, - health::AccountKind, oracle::ActionKind, params::LiquidationBonus, }; @@ -39,14 +38,7 @@ fn redeem_invalid_funds() { let managed_vault_addr = deploy_managed_vault(&mut mock.app, &fund_manager, &credit_manager); - mock.create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); let res = execute_redeem( &mut mock, @@ -135,14 +127,7 @@ fn redeem_if_unlocked_positions_not_found() { let vault_info_res = query_vault_info(&mock, &managed_vault_addr); let vault_token = vault_info_res.vault_token; - mock.create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); // deposit to get vault tokens let deposited_amt = Uint128::new(123_000_000); @@ -189,14 +174,7 @@ fn redeem_invalid_unlocked_amount() { let vault_info_res = query_vault_info(&mock, &managed_vault_addr); let vault_token = vault_info_res.vault_token; - mock.create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); let deposited_amt = Uint128::new(12_400_000); execute_deposit( @@ -274,14 +252,7 @@ fn redeem_with_refund() { let vault_info_res = query_vault_info(&mock, &managed_vault_addr); let vault_token = vault_info_res.vault_token; - mock.create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); let deposited_amt = Uint128::new(12_400_000); execute_deposit( @@ -388,15 +359,7 @@ fn redeem_succeded( let vault_info_res = query_vault_info(&mock, &managed_vault_addr); let vault_token = vault_info_res.vault_token; - let fund_acc_id = mock - .create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + let fund_acc_id = mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); let mut fund_acc_amt = deposit_amt; diff --git a/contracts/vault/tests/tests/test_unlock.rs b/contracts/vault/tests/tests/test_unlock.rs index 1eca3dbe..c0569cb0 100644 --- a/contracts/vault/tests/tests/test_unlock.rs +++ b/contracts/vault/tests/tests/test_unlock.rs @@ -1,5 +1,4 @@ use cosmwasm_std::{coin, Addr, Uint128}; -use mars_types::health::AccountKind; use mars_vault::{error::ContractError, msg::VaultUnlock}; use super::{ @@ -52,14 +51,7 @@ fn unlock_invalid_amount() { let managed_vault_addr = deploy_managed_vault(&mut mock.app, &fund_manager, &credit_manager); - mock.create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); // unlock zero vault tokens let res = execute_unlock(&mut mock, &user, &managed_vault_addr, Uint128::zero(), &[]); @@ -117,14 +109,7 @@ fn unlock_succeded() { let managed_vault_addr = deploy_managed_vault(&mut mock.app, &fund_manager, &credit_manager); - mock.create_credit_account_v2( - &fund_manager, - AccountKind::FundManager { - vault_addr: managed_vault_addr.to_string(), - }, - None, - ) - .unwrap(); + mock.create_fund_manager_account(&fund_manager, &managed_vault_addr); let deposited_amt = Uint128::new(123_000_000); execute_deposit( diff --git a/packages/testing/src/multitest/helpers/mock_env.rs b/packages/testing/src/multitest/helpers/mock_env.rs index ae0a7ae6..e3afe094 100644 --- a/packages/testing/src/multitest/helpers/mock_env.rs +++ b/packages/testing/src/multitest/helpers/mock_env.rs @@ -314,29 +314,21 @@ impl MockEnv { self._create_credit_account(sender, AccountKind::HighLeveredStrategy).unwrap() } - fn _create_credit_account(&mut self, sender: &Addr, kind: AccountKind) -> AnyResult { - let res = self.app.execute_contract( - sender.clone(), - self.rover.clone(), - &ExecuteMsg::CreateCreditAccount(kind), - &[], - )?; - Ok(self.get_account_id(res)) + pub fn create_fund_manager_account(&mut self, sender: &Addr, vault: &Addr) -> String { + self._create_credit_account( + sender, + AccountKind::FundManager { + vault_addr: vault.to_string(), + }, + ) + .unwrap() } - pub fn create_credit_account_v2( - &mut self, - sender: &Addr, - kind: AccountKind, - account_id: Option, - ) -> AnyResult { + fn _create_credit_account(&mut self, sender: &Addr, kind: AccountKind) -> AnyResult { let res = self.app.execute_contract( sender.clone(), self.rover.clone(), - &ExecuteMsg::CreateCreditAccountV2 { - kind, - account_id, - }, + &ExecuteMsg::CreateCreditAccount(kind), &[], )?; Ok(self.get_account_id(res)) diff --git a/packages/types/src/account_nft/execute.rs b/packages/types/src/account_nft/execute.rs index f34b123e..e1d27cf1 100644 --- a/packages/types/src/account_nft/execute.rs +++ b/packages/types/src/account_nft/execute.rs @@ -16,11 +16,9 @@ pub enum ExecuteMsg { UpdateConfig { updates: NftConfigUpdates, }, - /// Mint a new NFT to the specified user; can only be called by the contract minter. - /// Create own token_id or use the next available one. + /// Mint a new NFT to the specified user; can only be called by the contract minter Mint { user: String, - token_id: Option, }, /// Burn an NFT the sender has access to. Will attempt to query the Credit Manager first /// to ensure the balance is below the config set threshold. diff --git a/packages/types/src/credit_manager/execute.rs b/packages/types/src/credit_manager/execute.rs index 2f3252a6..a46407cb 100644 --- a/packages/types/src/credit_manager/execute.rs +++ b/packages/types/src/credit_manager/execute.rs @@ -19,11 +19,6 @@ pub enum ExecuteMsg { //-------------------------------------------------------------------------------------------------- /// Mints NFT representing a credit account for user. User can have many. CreateCreditAccount(AccountKind), - /// Mints NFT representing a credit account for user with optional custom account_id creation. User can have many accounts. - CreateCreditAccountV2 { - kind: AccountKind, - account_id: Option, - }, /// Update user's position on their credit account UpdateCreditAccount { account_id: Option, diff --git a/schemas/mars-account-nft/mars-account-nft.json b/schemas/mars-account-nft/mars-account-nft.json index b5f831a6..094802fe 100644 --- a/schemas/mars-account-nft/mars-account-nft.json +++ b/schemas/mars-account-nft/mars-account-nft.json @@ -83,7 +83,7 @@ "additionalProperties": false }, { - "description": "Mint a new NFT to the specified user; can only be called by the contract minter. Create own token_id or use the next available one.", + "description": "Mint a new NFT to the specified user; can only be called by the contract minter", "type": "object", "required": [ "mint" @@ -95,12 +95,6 @@ "user" ], "properties": { - "token_id": { - "type": [ - "string", - "null" - ] - }, "user": { "type": "string" } diff --git a/schemas/mars-credit-manager/mars-credit-manager.json b/schemas/mars-credit-manager/mars-credit-manager.json index a8980cdb..9f89e447 100644 --- a/schemas/mars-credit-manager/mars-credit-manager.json +++ b/schemas/mars-credit-manager/mars-credit-manager.json @@ -146,34 +146,6 @@ }, "additionalProperties": false }, - { - "description": "Mints NFT representing a credit account for user with optional custom account_id creation. User can have many accounts.", - "type": "object", - "required": [ - "create_credit_account_v2" - ], - "properties": { - "create_credit_account_v2": { - "type": "object", - "required": [ - "kind" - ], - "properties": { - "account_id": { - "type": [ - "string", - "null" - ] - }, - "kind": { - "$ref": "#/definitions/AccountKind" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - }, { "description": "Update user's position on their credit account", "type": "object", diff --git a/scripts/types/generated/mars-account-nft/MarsAccountNft.client.ts b/scripts/types/generated/mars-account-nft/MarsAccountNft.client.ts index 0f54b3e2..7f21a05e 100644 --- a/scripts/types/generated/mars-account-nft/MarsAccountNft.client.ts +++ b/scripts/types/generated/mars-account-nft/MarsAccountNft.client.ts @@ -287,10 +287,8 @@ export interface MarsAccountNftInterface extends MarsAccountNftReadOnlyInterface ) => Promise mint: ( { - tokenId, user, }: { - tokenId?: string user: string }, fee?: number | StdFee | 'auto', @@ -443,10 +441,8 @@ export class MarsAccountNftClient } mint = async ( { - tokenId, user, }: { - tokenId?: string user: string }, fee: number | StdFee | 'auto' = 'auto', @@ -458,7 +454,6 @@ export class MarsAccountNftClient this.contractAddress, { mint: { - token_id: tokenId, user, }, }, diff --git a/scripts/types/generated/mars-account-nft/MarsAccountNft.react-query.ts b/scripts/types/generated/mars-account-nft/MarsAccountNft.react-query.ts index 577ddee2..d0ad56f5 100644 --- a/scripts/types/generated/mars-account-nft/MarsAccountNft.react-query.ts +++ b/scripts/types/generated/mars-account-nft/MarsAccountNft.react-query.ts @@ -689,7 +689,6 @@ export function useMarsAccountNftBurnMutation( export interface MarsAccountNftMintMutation { client: MarsAccountNftClient msg: { - tokenId?: string user: string } args?: { diff --git a/scripts/types/generated/mars-account-nft/MarsAccountNft.types.ts b/scripts/types/generated/mars-account-nft/MarsAccountNft.types.ts index 775b714d..7142fd82 100644 --- a/scripts/types/generated/mars-account-nft/MarsAccountNft.types.ts +++ b/scripts/types/generated/mars-account-nft/MarsAccountNft.types.ts @@ -22,7 +22,6 @@ export type ExecuteMsg = } | { mint: { - token_id?: string | null user: string } } diff --git a/scripts/types/generated/mars-credit-manager/MarsCreditManager.client.ts b/scripts/types/generated/mars-credit-manager/MarsCreditManager.client.ts index 2e299a37..43d834e7 100644 --- a/scripts/types/generated/mars-credit-manager/MarsCreditManager.client.ts +++ b/scripts/types/generated/mars-credit-manager/MarsCreditManager.client.ts @@ -350,18 +350,6 @@ export interface MarsCreditManagerInterface extends MarsCreditManagerReadOnlyInt memo?: string, _funds?: Coin[], ) => Promise - createCreditAccountV2: ( - { - accountId, - kind, - }: { - accountId?: string - kind: AccountKind - }, - fee?: number | StdFee | 'auto', - memo?: string, - _funds?: Coin[], - ) => Promise updateCreditAccount: ( { accountId, @@ -434,7 +422,6 @@ export class MarsCreditManagerClient this.sender = sender this.contractAddress = contractAddress this.createCreditAccount = this.createCreditAccount.bind(this) - this.createCreditAccountV2 = this.createCreditAccountV2.bind(this) this.updateCreditAccount = this.updateCreditAccount.bind(this) this.repayFromWallet = this.repayFromWallet.bind(this) this.updateConfig = this.updateConfig.bind(this) @@ -459,32 +446,6 @@ export class MarsCreditManagerClient _funds, ) } - createCreditAccountV2 = async ( - { - accountId, - kind, - }: { - accountId?: string - kind: AccountKind - }, - fee: number | StdFee | 'auto' = 'auto', - memo?: string, - _funds?: Coin[], - ): Promise => { - return await this.client.execute( - this.sender, - this.contractAddress, - { - create_credit_account_v2: { - account_id: accountId, - kind, - }, - }, - fee, - memo, - _funds, - ) - } updateCreditAccount = async ( { accountId, diff --git a/scripts/types/generated/mars-credit-manager/MarsCreditManager.react-query.ts b/scripts/types/generated/mars-credit-manager/MarsCreditManager.react-query.ts index 9d1ea488..3ab24d9a 100644 --- a/scripts/types/generated/mars-credit-manager/MarsCreditManager.react-query.ts +++ b/scripts/types/generated/mars-credit-manager/MarsCreditManager.react-query.ts @@ -730,30 +730,6 @@ export function useMarsCreditManagerUpdateCreditAccountMutation( options, ) } -export interface MarsCreditManagerCreateCreditAccountV2Mutation { - client: MarsCreditManagerClient - msg: { - accountId?: string - kind: AccountKind - } - args?: { - fee?: number | StdFee | 'auto' - memo?: string - funds?: Coin[] - } -} -export function useMarsCreditManagerCreateCreditAccountV2Mutation( - options?: Omit< - UseMutationOptions, - 'mutationFn' - >, -) { - return useMutation( - ({ client, msg, args: { fee, memo, funds } = {} }) => - client.createCreditAccountV2(msg, fee, memo, funds), - options, - ) -} export interface MarsCreditManagerCreateCreditAccountMutation { client: MarsCreditManagerClient msg: AccountKind diff --git a/scripts/types/generated/mars-credit-manager/MarsCreditManager.types.ts b/scripts/types/generated/mars-credit-manager/MarsCreditManager.types.ts index fc054df7..16aac04c 100644 --- a/scripts/types/generated/mars-credit-manager/MarsCreditManager.types.ts +++ b/scripts/types/generated/mars-credit-manager/MarsCreditManager.types.ts @@ -30,12 +30,6 @@ export type ExecuteMsg = | { create_credit_account: AccountKind } - | { - create_credit_account_v2: { - account_id?: string | null - kind: AccountKind - } - } | { update_credit_account: { account_id?: string | null