Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use ServiceAccountType for account addresses in ServiceConfig structs #53

Merged
merged 2 commits into from
Oct 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions contracts/services/astroport-lper/src/msg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use cosmwasm_std::{ensure, Addr, Decimal, Deps, DepsMut, Uint128};
use cw_ownable::cw_ownable_query;
use valence_macros::OptionalStruct;
use valence_service_utils::{
error::ServiceError, msg::ServiceConfigValidation, ServiceConfigInterface,
error::ServiceError, msg::ServiceConfigValidation, ServiceAccountType, ServiceConfigInterface,
};

#[cw_serde]
Expand Down Expand Up @@ -47,30 +47,30 @@ pub enum QueryMsg {
#[cw_serde]
#[derive(OptionalStruct)]
pub struct ServiceConfig {
pub input_addr: String,
pub output_addr: String,
pub input_addr: ServiceAccountType,
pub output_addr: ServiceAccountType,
pub pool_addr: String,
pub lp_config: LiquidityProviderConfig,
}

impl ServiceConfig {
pub fn new(
input_addr: String,
output_addr: String,
input_addr: impl Into<ServiceAccountType>,
output_addr: impl Into<ServiceAccountType>,
pool_addr: String,
lp_config: LiquidityProviderConfig,
) -> Self {
ServiceConfig {
input_addr,
output_addr,
input_addr: input_addr.into(),
output_addr: output_addr.into(),
pool_addr,
lp_config,
}
}

fn do_validate(&self, api: &dyn cosmwasm_std::Api) -> Result<(Addr, Addr, Addr), ServiceError> {
let input_addr = api.addr_validate(&self.input_addr)?;
let output_addr = api.addr_validate(&self.output_addr)?;
let input_addr = self.input_addr.to_addr(api)?;
let output_addr = self.output_addr.to_addr(api)?;
let pool_addr = api.addr_validate(&self.pool_addr)?;

Ok((input_addr, output_addr, pool_addr))
Expand Down Expand Up @@ -147,11 +147,11 @@ impl ServiceConfigValidation<Config> for ServiceConfig {
impl OptionalServiceConfig {
pub fn update_config(self, deps: &DepsMut, config: &mut Config) -> Result<(), ServiceError> {
if let Some(input_addr) = self.input_addr {
config.input_addr = deps.api.addr_validate(&input_addr)?;
config.input_addr = input_addr.to_addr(deps.api)?;
}

if let Some(output_addr) = self.output_addr {
config.output_addr = deps.api.addr_validate(&output_addr)?;
config.output_addr = output_addr.to_addr(deps.api)?;
}

if let Some(pool_addr) = self.pool_addr {
Expand Down
38 changes: 19 additions & 19 deletions contracts/services/astroport-lper/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -158,19 +158,19 @@ fn instantiate_lper_contract(
&InstantiateMsg {
owner: setup.owner_acc().address(),
processor: setup.processor_acc().address(),
config: ServiceConfig {
input_addr: input_acc,
output_addr: output_acc,
config: ServiceConfig::new(
input_acc.as_str(),
output_acc.as_str(),
pool_addr,
lp_config: LiquidityProviderConfig {
LiquidityProviderConfig {
pool_type,
asset_data: AssetData {
asset1: setup.pool_asset1.clone(),
asset2: setup.pool_asset2.clone(),
},
slippage_tolerance: None,
},
},
),
},
None,
Some("lper"),
Expand All @@ -188,8 +188,8 @@ pub fn only_owner_can_update_config() {
let wasm = Wasm::new(&setup.inner.app);

let new_config = OptionalServiceConfig {
input_addr: Some(setup.input_acc.clone()),
output_addr: Some(setup.output_acc.clone()),
input_addr: Some(setup.input_acc.as_str().into()),
output_addr: Some(setup.output_acc.as_str().into()),
pool_addr: Some(setup.inner.pool_cw20_addr.clone()),
lp_config: Some(LiquidityProviderConfig {
pool_type: PoolType::Cw20LpToken(
Expand Down Expand Up @@ -319,11 +319,11 @@ fn instantiate_with_wrong_assets() {
&InstantiateMsg {
owner: setup.inner.owner_acc().address(),
processor: setup.inner.processor_acc().address(),
config: ServiceConfig {
input_addr: setup.inner.owner_acc().address(),
output_addr: setup.inner.owner_acc().address(),
pool_addr: setup.inner.pool_cw20_addr.clone(),
lp_config: LiquidityProviderConfig {
config: ServiceConfig::new(
setup.inner.owner_acc().address().as_str(),
setup.inner.owner_acc().address().as_str(),
setup.inner.pool_cw20_addr.clone(),
LiquidityProviderConfig {
pool_type: PoolType::Cw20LpToken(
valence_astroport_utils::astroport_cw20_lp_token::PairType::Xyk {},
),
Expand All @@ -333,7 +333,7 @@ fn instantiate_with_wrong_assets() {
},
slippage_tolerance: None,
},
},
),
},
None,
Some("lper"),
Expand Down Expand Up @@ -369,11 +369,11 @@ fn instantiate_with_wrong_pool_type() {
&InstantiateMsg {
owner: setup.inner.owner_acc().address(),
processor: setup.inner.processor_acc().address(),
config: ServiceConfig {
input_addr: setup.inner.owner_acc().address(),
output_addr: setup.inner.owner_acc().address(),
pool_addr: setup.inner.pool_cw20_addr.clone(),
lp_config: LiquidityProviderConfig {
config: ServiceConfig::new(
setup.inner.owner_acc().address().as_str(),
setup.inner.owner_acc().address().as_str(),
setup.inner.pool_cw20_addr.clone(),
LiquidityProviderConfig {
pool_type: PoolType::Cw20LpToken(
valence_astroport_utils::astroport_cw20_lp_token::PairType::Stable {},
),
Expand All @@ -383,7 +383,7 @@ fn instantiate_with_wrong_pool_type() {
},
slippage_tolerance: None,
},
},
),
},
None,
Some("lper"),
Expand Down
30 changes: 15 additions & 15 deletions contracts/services/forwarder/src/msg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ use valence_service_utils::{
denoms::{CheckedDenom, DenomError, UncheckedDenom},
error::ServiceError,
msg::ServiceConfigValidation,
ServiceConfigInterface,
ServiceAccountType, ServiceConfigInterface,
};

#[cw_serde]
Expand Down Expand Up @@ -94,9 +94,9 @@ impl From<(UncheckedDenom, u128)> for UncheckedForwardingConfig {
/// Struct representing the service configuration.
pub struct ServiceConfig {
/// The input address for the service.
pub input_addr: String,
pub input_addr: ServiceAccountType,
/// The output address for the service.
pub output_addr: String,
pub output_addr: ServiceAccountType,
/// The forwarding configurations for the service.
pub forwarding_configs: Vec<UncheckedForwardingConfig>,
/// The forwarding constraints for the service.
Expand All @@ -105,22 +105,22 @@ pub struct ServiceConfig {

impl ServiceConfig {
pub fn new(
input_addr: String,
output_addr: String,
input_addr: impl Into<ServiceAccountType>,
output_addr: impl Into<ServiceAccountType>,
forwarding_configs: Vec<UncheckedForwardingConfig>,
forwarding_constraints: ForwardingConstraints,
) -> Self {
ServiceConfig {
input_addr,
output_addr,
input_addr: input_addr.into(),
output_addr: output_addr.into(),
forwarding_configs,
forwarding_constraints,
}
}

fn do_validate(&self, api: &dyn cosmwasm_std::Api) -> Result<(Addr, Addr), ServiceError> {
let input_addr = api.addr_validate(&self.input_addr)?;
let output_addr = api.addr_validate(&self.output_addr)?;
let input_addr = self.input_addr.to_addr(api)?;
let output_addr = self.output_addr.to_addr(api)?;
// Ensure denoms are unique in forwarding configs
ensure_denom_uniqueness(&self.forwarding_configs)?;
Ok((input_addr, output_addr))
Expand All @@ -140,12 +140,12 @@ impl ServiceConfigValidation<Config> for ServiceConfig {
// Convert the unchecked denoms to checked denoms
let checked_fwd_configs = convert_to_checked_configs(&self.forwarding_configs, deps)?;

Ok(Config {
Ok(Config::new(
input_addr,
output_addr,
forwarding_configs: checked_fwd_configs,
forwarding_constraints: self.forwarding_constraints.clone(),
})
checked_fwd_configs,
self.forwarding_constraints.clone(),
))
}
}

Expand Down Expand Up @@ -196,11 +196,11 @@ impl ServiceConfigInterface<ServiceConfig> for ServiceConfig {
impl OptionalServiceConfig {
pub fn update_config(self, deps: &DepsMut, config: &mut Config) -> Result<(), ServiceError> {
if let Some(input_addr) = self.input_addr {
config.input_addr = deps.api.addr_validate(&input_addr)?;
config.input_addr = input_addr.to_addr(deps.api)?;
}

if let Some(output_addr) = self.output_addr {
config.output_addr = deps.api.addr_validate(&output_addr)?;
config.output_addr = output_addr.to_addr(deps.api)?;
}

if let Some(forwarding_configs) = self.forwarding_configs {
Expand Down
8 changes: 4 additions & 4 deletions contracts/services/forwarder/src/tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,8 +90,8 @@ impl ForwarderTestSuite {
forwarding_constraints: ForwardingConstraints,
) -> ServiceConfig {
ServiceConfig::new(
self.input_addr.to_string(),
self.output_addr.to_string(),
self.input_addr(),
self.output_addr(),
forwarding_configs.into_iter().map(Into::into).collect(),
forwarding_constraints,
)
Expand Down Expand Up @@ -639,8 +639,8 @@ fn update_config() {
vec![(UncheckedDenom::Native(NTRN.into()), 2_000_000_000_u128)],
ForwardingConstraints::new(Duration::Height(3).into()),
);
new_config.input_addr = suite.output_addr.to_string();
new_config.output_addr = suite.input_addr.to_string();
new_config.input_addr = suite.output_addr().into();
new_config.output_addr = suite.input_addr().into();

// Execute update config action
suite.update_config(svc.clone(), new_config).unwrap();
Expand Down
4 changes: 2 additions & 2 deletions contracts/services/reverse-splitter-temp/src/msg.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ impl ServiceConfig {
pub fn validate(&self, deps: Deps) -> Result<Config, ContractError> {
// TODO: Verify splits are valid
Ok(Config {
output_addr: self.output_addr.to_addr(deps)?,
output_addr: self.output_addr.to_addr(deps.api)?,
splits: self.splits.clone(),
})
}
Expand All @@ -70,7 +70,7 @@ impl OptionalServiceConfig {
let mut config = CONFIG.load(deps.storage)?;

if let Some(output_addr) = self.output_addr {
config.output_addr = output_addr.to_addr(deps.as_ref())?;
config.output_addr = output_addr.to_addr(deps.api)?;
}

if let Some(splits) = self.splits {
Expand Down
Loading
Loading