Skip to main content

casper_client/rpcs/v2_0_0/
query_balance.rs

1use serde::{Deserialize, Serialize};
2
3use casper_types::{account::AccountHash, EntityAddr, PublicKey, URef};
4
5use crate::rpcs::common::GlobalStateIdentifier;
6
7pub use crate::rpcs::v1_5_0::query_balance::QueryBalanceResult;
8pub(crate) use crate::rpcs::v1_5_0::query_balance::QUERY_BALANCE_METHOD;
9
10/// Identifier of a purse.
11#[derive(Serialize, Deserialize, Debug, Clone)]
12#[serde(deny_unknown_fields, rename_all = "snake_case")]
13pub enum PurseIdentifier {
14    /// The main purse of the account identified by this public key.
15    MainPurseUnderPublicKey(PublicKey),
16    /// The main purse of the account identified by this account hash.
17    MainPurseUnderAccountHash(AccountHash),
18    /// The main purse of the account identified by this entity address.
19    MainPurseUnderEntityAddr(EntityAddr),
20    /// The purse identified by this URef.
21    PurseUref(URef),
22}
23
24/// Params for "query_balance" RPC request.
25#[derive(Serialize, Deserialize, Debug)]
26pub struct QueryBalanceParams {
27    /// The state identifier used for the query.
28    pub state_identifier: Option<GlobalStateIdentifier>,
29    /// The identifier to obtain the purse corresponding to balance query.
30    pub purse_identifier: PurseIdentifier,
31}
32
33impl QueryBalanceParams {
34    pub(crate) fn new(
35        state_identifier: Option<GlobalStateIdentifier>,
36        purse_identifier: PurseIdentifier,
37    ) -> Self {
38        QueryBalanceParams {
39            state_identifier,
40            purse_identifier,
41        }
42    }
43}