use crate::types::AccountAddress;
use crate::types::events::EventHandle;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct AccountResource {
pub sequence_number: u64,
pub authentication_key: String,
}
impl AccountResource {
pub const TYPE: &'static str = "0x1::account::Account";
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct CoinStoreResource {
pub coin: CoinInfo,
pub frozen: bool,
pub deposit_events: EventHandle,
pub withdraw_events: EventHandle,
}
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct CoinInfo {
pub value: u64,
}
impl CoinStoreResource {
pub fn balance(&self) -> u64 {
self.coin.value
}
}
#[allow(dead_code)]
pub const APT_COIN_STORE_TYPE: &str = "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>";
#[allow(dead_code)] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct FungibleAssetBalance {
pub balance: u64,
pub frozen: bool,
}
#[allow(dead_code)] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct FungibleAssetMetadata {
pub name: String,
pub symbol: String,
pub decimals: u8,
}
#[allow(dead_code)] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct CollectionData {
pub name: String,
pub description: String,
pub uri: String,
pub current_supply: u64,
pub maximum_supply: u64,
}
#[allow(dead_code)] #[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct TokenData {
pub name: String,
pub description: String,
pub uri: String,
pub collection: AccountAddress,
}
#[allow(dead_code)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct StakePool {
pub active: u64,
pub inactive: u64,
pub pending_active: u64,
pub pending_inactive: u64,
pub operator_address: AccountAddress,
pub delegated_voter: AccountAddress,
}
#[allow(dead_code)] #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct StakingConfig {
pub minimum_stake: u64,
pub maximum_stake: u64,
pub recurring_lockup_duration_secs: u64,
pub rewards_rate: u64,
pub rewards_rate_denominator: u64,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_account_resource_type() {
assert_eq!(AccountResource::TYPE, "0x1::account::Account");
}
#[test]
fn test_coin_store_balance() {
let coin_store = CoinStoreResource {
coin: CoinInfo { value: 1000 },
frozen: false,
deposit_events: EventHandle {
counter: 0,
guid: crate::types::events::EventGuid {
creation_number: 0,
account_address: AccountAddress::ONE,
},
},
withdraw_events: EventHandle {
counter: 0,
guid: crate::types::events::EventGuid {
creation_number: 1,
account_address: AccountAddress::ONE,
},
},
};
assert_eq!(coin_store.balance(), 1000);
}
}