casper_client/rpcs/v1_5_0/
query_balance.rs

1use serde::{Deserialize, Serialize};
2
3use casper_types::{account::AccountHash, ProtocolVersion, PublicKey, URef, U512};
4
5use crate::rpcs::common::GlobalStateIdentifier;
6
7pub(crate) const QUERY_BALANCE_METHOD: &str = "query_balance";
8
9/// Identifier of a purse.
10#[derive(Serialize, Deserialize, Debug, Clone)]
11#[serde(deny_unknown_fields, rename_all = "snake_case")]
12pub enum PurseIdentifier {
13    /// The main purse of the account identified by this public key.
14    MainPurseUnderPublicKey(PublicKey),
15    /// The main purse of the account identified by this account hash.
16    MainPurseUnderAccountHash(AccountHash),
17    /// The purse identified by this URef.
18    PurseUref(URef),
19}
20
21/// Params for "query_balance" RPC request.
22#[derive(Serialize, Deserialize, Debug)]
23pub struct QueryBalanceParams {
24    /// The state identifier used for the query.
25    pub state_identifier: Option<GlobalStateIdentifier>,
26    /// The identifier to obtain the purse corresponding to balance query.
27    pub purse_identifier: PurseIdentifier,
28}
29
30/// Result for "query_balance" RPC response.
31#[derive(Serialize, Deserialize, Debug, Clone)]
32pub struct QueryBalanceResult {
33    /// The RPC API version.
34    pub api_version: ProtocolVersion,
35    /// The balance represented in motes.
36    pub balance: U512,
37}