1use cosmwasm_schema::cw_serde;
2use cw4::MemberListResponse;
3
4use cosmwasm_std::{
5 to_json_binary, Addr, CosmosMsg, CustomQuery, Querier, QuerierWrapper, StdResult, WasmMsg,
6 WasmQuery,
7};
8
9use crate::msg::{ExecuteMsg, QueryMsg};
10
11#[cw_serde]
14pub struct SplitsContract(pub Addr);
15
16impl SplitsContract {
17 pub fn addr(&self) -> Addr {
18 self.0.clone()
19 }
20
21 pub fn call<T: Into<ExecuteMsg>>(&self, msg: T) -> StdResult<CosmosMsg> {
22 let msg = to_json_binary(&msg.into())?;
23 Ok(WasmMsg::Execute {
24 contract_addr: self.addr().into(),
25 msg,
26 funds: vec![],
27 }
28 .into())
29 }
30
31 pub fn list_members<Q, T, CQ>(&self, querier: &Q) -> StdResult<MemberListResponse>
32 where
33 Q: Querier,
34 T: Into<String>,
35 CQ: CustomQuery,
36 {
37 let msg = QueryMsg::ListMembers {
38 start_after: None,
39 limit: None,
40 };
41 let query = WasmQuery::Smart {
42 contract_addr: self.addr().into(),
43 msg: to_json_binary(&msg)?,
44 }
45 .into();
46 let res: MemberListResponse = QuerierWrapper::<CQ>::new(querier).query(&query)?;
47 Ok(res)
48 }
49}