1use crate::types::AccountAddress;
6use crate::types::events::EventHandle;
7use serde::{Deserialize, Serialize};
8
9#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
14pub struct AccountResource {
15 pub sequence_number: u64,
17 pub authentication_key: String,
19}
20
21impl AccountResource {
22 pub const TYPE: &'static str = "0x1::account::Account";
24}
25
26#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
30pub struct CoinStoreResource {
31 pub coin: CoinInfo,
33 pub frozen: bool,
35 pub deposit_events: EventHandle,
37 pub withdraw_events: EventHandle,
39}
40
41#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
43pub struct CoinInfo {
44 pub value: u64,
46}
47
48impl CoinStoreResource {
49 pub fn balance(&self) -> u64 {
51 self.coin.value
52 }
53}
54
55#[allow(dead_code)]
57pub const APT_COIN_STORE_TYPE: &str = "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>";
58
59#[allow(dead_code)] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
62pub struct FungibleAssetBalance {
63 pub balance: u64,
65 pub frozen: bool,
67}
68
69#[allow(dead_code)] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
72pub struct FungibleAssetMetadata {
73 pub name: String,
75 pub symbol: String,
77 pub decimals: u8,
79}
80
81#[allow(dead_code)] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
84pub struct CollectionData {
85 pub name: String,
87 pub description: String,
89 pub uri: String,
91 pub current_supply: u64,
93 pub maximum_supply: u64,
95}
96
97#[allow(dead_code)] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
100pub struct TokenData {
101 pub name: String,
103 pub description: String,
105 pub uri: String,
107 pub collection: AccountAddress,
109}
110
111#[allow(dead_code)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
114pub struct StakePool {
115 pub active: u64,
117 pub inactive: u64,
119 pub pending_active: u64,
121 pub pending_inactive: u64,
123 pub operator_address: AccountAddress,
125 pub delegated_voter: AccountAddress,
127}
128
129#[allow(dead_code)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
132pub struct StakingConfig {
133 pub minimum_stake: u64,
135 pub maximum_stake: u64,
137 pub recurring_lockup_duration_secs: u64,
139 pub rewards_rate: u64,
141 pub rewards_rate_denominator: u64,
143}
144
145#[cfg(test)]
146mod tests {
147 use super::*;
148
149 #[test]
150 fn test_account_resource_type() {
151 assert_eq!(AccountResource::TYPE, "0x1::account::Account");
152 }
153
154 #[test]
155 fn test_coin_store_balance() {
156 let coin_store = CoinStoreResource {
157 coin: CoinInfo { value: 1000 },
158 frozen: false,
159 deposit_events: EventHandle {
160 counter: 0,
161 guid: crate::types::events::EventGuid {
162 creation_number: 0,
163 account_address: AccountAddress::ONE,
164 },
165 },
166 withdraw_events: EventHandle {
167 counter: 0,
168 guid: crate::types::events::EventGuid {
169 creation_number: 1,
170 account_address: AccountAddress::ONE,
171 },
172 },
173 };
174 assert_eq!(coin_store.balance(), 1000);
175 }
176}