1use crate::currency::{CurrencyDenom, DecCoin};
2use nym_config::defaults::DenomDetails;
3use schemars::JsonSchema;
4use serde::{Deserialize, Serialize};
5
6#[cfg_attr(feature = "generate-ts", derive(ts_rs::TS))]
7#[cfg_attr(
8 feature = "generate-ts",
9 ts(export, export_to = "ts-packages/types/src/types/rust/Account.ts")
10)]
11#[derive(Serialize, Deserialize, JsonSchema)]
12pub struct Account {
13 pub client_address: String,
14 pub base_mix_denom: String,
15
16 pub display_mix_denom: CurrencyDenom,
19}
20
21impl Account {
22 pub fn new(client_address: String, mix_denom: DenomDetails) -> Self {
23 Account {
24 client_address,
25 base_mix_denom: mix_denom.base.to_owned(),
26 display_mix_denom: mix_denom.display.parse().unwrap_or_default(),
27 }
28 }
29}
30
31#[cfg_attr(feature = "generate-ts", derive(ts_rs::TS))]
32#[cfg_attr(
33 feature = "generate-ts",
34 ts(
35 export,
36 export_to = "ts-packages/types/src/types/rust/AccountWithMnemonic.ts"
37 )
38)]
39#[derive(Serialize, Deserialize)]
40pub struct AccountWithMnemonic {
41 pub account: Account,
42 pub mnemonic: String,
43}
44
45#[cfg_attr(feature = "generate-ts", derive(ts_rs::TS))]
46#[cfg_attr(
47 feature = "generate-ts",
48 ts(export, export_to = "ts-packages/types/src/types/rust/AccountEntry.ts")
49)]
50#[derive(Clone, Debug, Serialize, Deserialize)]
51pub struct AccountEntry {
52 pub id: String,
53 pub address: String,
54}
55
56#[cfg_attr(feature = "generate-ts", derive(ts_rs::TS))]
57#[cfg_attr(
58 feature = "generate-ts",
59 ts(export, export_to = "ts-packages/types/src/types/rust/Balance.ts")
60)]
61#[derive(Serialize, Deserialize)]
62pub struct Balance {
63 pub amount: DecCoin,
64 pub printable_balance: String,
65}
66
67impl Balance {
68 pub fn new(amount: DecCoin) -> Self {
69 Balance {
70 printable_balance: amount.to_string(),
71 amount,
72 }
73 }
74}